2016-09-20 58 views
-1

我想用一些東西,可以創建一個字典一樣,替代品的boost :: multi_index

多鍵

Key1      which will map to    SomeObject 
Key2 
Key3 
Key4 
etc 

我想基於任意鍵查找。我有boost :: multi_index奇怪的問題,我正在尋找替代品。

我的編譯器是Visual Studio 2005,我使用boost和DONT USE C++ 11。任何提升(除multi_index)的東西是最受歡迎的。

+5

也許如果你能用'boost :: multi_index'來解釋你有什麼「奇怪的問題」,我們可以幫你解決它們嗎? –

+0

我和Joachim在這裏。 – sehe

+0

爲什麼有人會低估我的問題?我有一個問題,並要求替代!爲什麼我會被低估? – 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

另外,還要注意要更加暢快,你需要更換vectorlist那裏享受迭代器/基準的穩定性。