使用一个值为std :: shared_ptr的map是一个很好的设计选择,用于拥有多索引的类列表?

NoS*_*tAl 6 c++ stdmap shared-ptr boost-multi-index c++11

问题很简单:我们有一个有成员a,b,c,d的类...我们希望能够快速搜索(键是一个成员的值)并通过提供当前值来更新具有新值的类列表或者b或c ......我想过要一堆
std::map<decltype(MyClass.a/*b,c,d*/),shared_ptr<MyClass>>.

1)这是个好主意吗?

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

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

seh*_*ehe 7

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

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

  3. 正如ildjarn所提到的,升压MI不支持移动语义的又

否则,我认为Boost MultiIndex在大多数情况下都是优越的,因为你不太可能达到它收到的测试数量.