これは私がしていることの大まかな考えです:
Map map;
create_map(map); //initialize map
Value x,y;
while(...){
...
x = ...;
y = ...;
put(map, x, (void *) &y);
...
}
マップのタイプは{Value、(void *)}です。マップはカスタムで作成されていますが、私は作成しませんでした。私はそれがどこで定義されているかを理解しようとしています、そして私がそれを見つけたら更新します。マップが行うのは、値と(void *)の関連付けをある種の構造体に格納することだけです。
マップに挿入された値yが、必要な値を取得していないことが起こっていると思います。whileループの実行後にyの値を格納します。各反復のアドレスを変えて、異なるバージョンのyを指すようにします。
したがって、上記のコードでは、マップ内の任意のキーXについて、それらはすべて同じ値を指します。異なる値を指すようにします。