import vector fun map(): map { var toRet.construct(): map return toRet } fun map(key:T, value:U): map { var toRet.construct(): map toRet.set(key, value) return toRet } obj map { var keys: vector::vector var values: vector::vector fun construct() { keys.construct() values.construct() } fun copy_construct(old: map*) { keys.copy_construct(&old->keys) values.copy_construct(&old->values) } fun destruct() { keys.destruct() values.destruct() } fun find_index(key: T): int { return keys.find_index(key) } fun set(key: T, value: U) { var keyIdx = find_index(key) if (keyIdx >= 0) { values.set(keyIdx, value) return; } keys.add(key) values.add(value) } fun get(key: T): U { return values.get(keys.find_index(key)) } fun operator[](key: T): U { return get(key) } }