Loki の AssocVector (要素の参照の局所性、マップと比較して要素ごとのメモリ オーバーヘッドが低い) によって提供されるパフォーマンス特性を持ちながら、Boost の BiMap 機能 (からマップをクエリできる) を備えたライブラリ コードを誰かが知っているのだろうか関係の両側)?
または、並べ替えられた std::vector の std::pairs を使用し、ペアのいずれかの要素をキーとして使用してベクトルを検索する機能を追加することは、今後の方法ですか?
Loki の AssocVector (要素の参照の局所性、マップと比較して要素ごとのメモリ オーバーヘッドが低い) によって提供されるパフォーマンス特性を持ちながら、Boost の BiMap 機能 (からマップをクエリできる) を備えたライブラリ コードを誰かが知っているのだろうか関係の両側)?
または、並べ替えられた std::vector の std::pairs を使用し、ペアのいずれかの要素をキーとして使用してベクトルを検索する機能を追加することは、今後の方法ですか?
それは本当にあなたが何を速くしたいかによって異なります。Loki::AssocVector
には O( n ) の挿入と削除がありboost::bimap
ますが、ハッシュ テーブルで使用すると O(1) になります。データ構造の一方の「ビュー」でO( n ) 操作を使用し、もう一方の「ビュー」で O(lg n ) を使用できる場合、提案されたソリューションは正常に機能し、メモリをほとんど消費しません。1 つのビューでの操作が支配的である場合、小さなデータ セットの場合は非常に高速になることがあります。
Boost.Intrusiveを使用するかboost::bimap
、特殊なアロケーターを使用することも検討してください。