-1

int からオブジェクトへの双方向マッピングを作成する必要があります。boost::bimapオブジェクトがマッピングに配置された後に変更されている (マッピングに影響しない方法で変更されている) ため、 を使用できません。

簡単な解決策は、 avectorと an の2 つを使用することunordered_mapです。

vector<MyClass> _vector;
unordered_map<MyClass, size_t> _map;

ただし、これにより、各 の 2 つのコピーが保持さMyClassれます。これは望ましくありません。

MyClass *コンテナーの 1 つにポインターを保持し、もう 1 つのコンテナーのストレージを使用することはできますが、インスタンスを移動するか (ベクトルを再割り当てするか、ハッシュ テーブルのサイズを変更する場合) できるのではないvectorかと心配しています。unordered_map

どんな助けでも大歓迎です。

4

2 に答える 2

2

オブジェクトを 1 つのベクトルに格納し、マップされたインデックスを別のベクトルに保存することはできませんか?

std::vector<MyClass> vC;
std::vector<unsigned int> vM;

次に、オブジェクトvC[vM[i]]のマップされたクラスです。vC[i]

あなたがやろうとしていることについてもっと詳しく教えていただければ (マップは再帰的ですか? すべてのクラスにマップされたクラスがありますか? それとも一部のクラスだけですか? オブジェクトを変更する必要がある頻度はどれくらいですか?)

于 2015-02-12T23:49:32.397 に答える