问题很简单:
我们有一个类(class),成员有 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 是不可能的。
最佳答案
Boost MultiIndex 可能有一个明显的缺点,即它会尝试在集合的每次突变后使所有索引 保持最新。 如果您的数据加载阶段包含许多单独的写入,这可能会造成很大的性能损失。
Boost Multi Index 的使用模式可能不适合项目(成员)的编码风格(和品味...)。这应该是一个小缺点,但我想我会提到它
正如
ildjarn
提到的,Boost MI 目前还不支持移动语义
否则,我会认为 Boost MultiIndex 在大多数情况下更胜一筹,因为您不太可能达到它收到的测试量。
关于c++ - 使用值为 std::shared_ptr 的映射是否是具有多索引类列表的良好设计选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606891/