4

Loki の AssocVector (要素の参照の局所性、マップと比較して要素ごとのメモリ オーバーヘッドが低い) によって提供されるパフォーマンス特性を持ちながら、Boost の BiMap 機能 (からマップをクエリできる) を備えたライブラリ コードを誰かが知っているのだろうか関係の両側)?

または、並べ替えられた std::vector の std::pairs を使用し、ペアのいずれかの要素をキーとして使用してベクトルを検索する機能を追加することは、今後の方法ですか?

4

1 に答える 1

1

それは本当にあなたが何を速くしたいかによって異なります。Loki::AssocVectorには O( n ) の挿入と削除がありboost::bimapますが、ハッシュ テーブルで使用すると O(1) になります。データ構造の一方の「ビュー」でO( n ) 操作を使用し、もう一方の「ビュー」で O(lg n ) を使用できる場合、提案されたソリューションは正常に機能し、メモリをほとんど消費しません。1 つのビューでの操作が支配的である場合、小さなデータ セットの場合は非常に高速になることがあります。

Boost.Intrusiveを使用するかboost::bimap、特殊なアロケーターを使用することも検討してください。

于 2010-11-16T00:19:16.187 に答える