我想知道是否有人知道任何库代码具有 Loki 的 AssocVector 提供的性能特征(元素的引用位置,与地图相比,每个元素的内存开销更低)但具有 Boost 的 BiMap 功能(能够从关系的双方)?
还是使用 std::pairs 的排序 std::vector 并添加功能以使用对的任一元素作为键来查找向量是前进的方向?
我想知道是否有人知道任何库代码具有 Loki 的 AssocVector 提供的性能特征(元素的引用位置,与地图相比,每个元素的内存开销更低)但具有 Boost 的 BiMap 功能(能够从关系的双方)?
还是使用 std::pairs 的排序 std::vector 并添加功能以使用对的任一元素作为键来查找向量是前进的方向?
这真的取决于你想快速做什么。Loki::AssocVector
有 O( n ) 插入和删除,而boost::bimap
当你将它与哈希表一起使用时有 O(1)。如果您可以在数据结构的一个“视图”上使用 O( n ) 操作,而在另一个“视图”上使用 O(lg n ),那么您提出的解决方案将可以正常工作并且占用很少的内存。如果一个视图上的操作占主导地位,那么对于小型数据集可能会非常快。
您也可以考虑使用Boost.Intrusive或boost::bimap
使用专门的分配器。