boost :: multi_index的替代品

时间:2016-09-20 11:13:31

标签: c++ visual-c++ boost multi-index 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)之外的东西都是最受欢迎的。

1 个答案:

答案 0 :(得分: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

另外,请注意,为了更加无忧无虑,您需要将vector替换为list,以享受迭代器/参考稳定性。