6

问题很简单:我们有一个类,它有成员 a,b,c,d... 我们希望能够快速搜索(键是一个成员的值)并通过为 a或 b 或 c ...我想拥有一堆
std::map<decltype(MyClass.a/*b,c,d*/),shared_ptr<MyClass>>.

1)这是个好主意吗?

2) boost multi index 在各个方面都优于这种手工制作的解决方案吗?

出于简单/性能的原因,PS SQL 是不可能的。

4

2 回答 2

7
  1. Boost MultiIndex 可能有一个明显的缺点,它会在集合的每次突变后尝试使所有索引保持最新。如果您有一个包含许多单独写入的数据加载阶段,这可能会造成很大的性能损失。

  2. Boost Multi Index 的使用模式可能不符合项目(成员)的编码风格(和品味......)。这应该是一个小缺点,但我想我会提到它

  3. 如前所述ildjarn,Boost MI 目前还不支持移动语义

否则,在大多数情况下,我会认为 Boost MultiIndex 更胜一筹,因为您不太可能达到它收到的测试量。

于 2012-09-26T19:27:42.773 回答
1

您想考虑将所有映射包含在一个类中,任意决定其中一个容器作为存储“真实”对象的容器,然后只使用std::map带有映射类型的原始指针的第一个元素std::map.

但是,如果您需要复制这些地图,这将更加困难。

于 2012-09-27T01:39:46.083 回答