6

複数のキールックアップを実行できるC++連想マップコンテナタイプを探しています。マップには一定時間のルックアップが必要ですが、順序付けされているかどうかは関係ありません。それはただ速い必要があります。

たとえば、ルックアップキーとしてanとaを使用std::vectorして、多数のオブジェクトをマップに格納したいとします。ベクトルを取得するには、とが一致する必要があります。intvoid*intvoid*

そのようなコンテナはすでに存在しますか?それとも私は自分で転がす必要がありますか?もしそうなら、どうすればそれを実装できますか?私はboost::unordered_map別の内部に保存しようとしboost::unordered_mapていますが、この方法ではまだ成功していません。もっと簡単な方法がなければ、たぶん私はこの方法をパーシングし続けるでしょう。

4

4 に答える 4

4

一定のルックアップにはハッシュマップが必要です。boost :: unordered_map(またはtr1)を使用できます。キーは、intとvoidポインタを組み合わせたハッシュになります。

于 2010-04-22T16:49:10.593 に答える
2

ブーストを使用したくない場合は、を試すことができますmap< int, map<void*, vector> >。ただし、ルックアップはO(log(マップサイズ))です。

于 2010-04-22T16:52:16.520 に答える
0

boost::multi_indexを使用できます。

(実際に必要なのは、マップのキーとしてvoid *と整数の両方を含む型を使用し、マップの比較演算子を提供するために両方の生データを比較することだと思いますが)

于 2010-04-22T16:47:50.297 に答える