2016-09-20 59 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那里享受迭代器/基准的稳定性。