2016-09-20 5 views
-1

私は、任意のキーに基づいて調べたい代替:: multi_index

マルチキー

Key1      which will map to    SomeObject 
Key2 
Key3 
Key4 
etc 

、などの辞書を作成することができるものを使用したいと思います。私はboost :: multi_indexで奇妙な問題があり、代替案を探しています。

私のコンパイラはVisual Studio 2005で、boostとDONT USE C++ 11を使用しています。どんなboost(multi_index以外のもの)も大歓迎です。

あなたは奇妙な問題が修正を受ける必要があります。もちろん、
+5

あなたは 'boost :: multi_index'であなたが持っている"奇妙な問題 "について説明でき、代わりにそれらを解決するのに役立つかもしれませんか? –

+0

私はヨアヒムとここにいます。 – sehe

+0

なぜ誰かが私の質問をd​​ownvoteだろうか?私は質問があり、代替案を求めました!なぜ私は落ちるだろう? – codeworks

答えて

1

が、ここではうまく動作技術です:もちろん

std::vector<X> v; // elements of X in some order 
std::vector<std::reference_wrapper<X const> > index1(v.begin(), v.end()); 
std::vector<std::reference_wrapper<X const> > index2(v.begin(), v.end()); 

// sort the indexes 
std::sort(index1.begin(), index1.end(), by_property1); 
std::sort(index2.begin(), index2.end(), by_property2); 

は、突然変異の下で同期で物事を維持し、インデックスをソートの実行時のコストを制御することが多少なりほとんどの時間 - - なぜ、よりトリッキーなタスク、あなたはもっと気楽することに注意し、また、multi_index_container

をしたいと思います、あなたはイテレータ/リファレンスの安定性を楽しむことがlistvectorを交換する必要があると思います。