c++ - 哪个 STL 容器用于具有基于 key 的访问的有序数据?

标签 c++ stl containers

假设我有一组 Person 对象,每个对象如下所示:

class Person 
{
  string Name;
  string UniqueID;
}

现在,这些对象必须存储在一个允许我订购它们的容器中,这样我就可以给元素 X 轻松找到元素 X+1 和 X-1。

但是,我还需要基于 UniqueID 的快速访问,因为集合会很大并且线性搜索不会削减它。

我目前的“解决方案”是结合使用 std::list 和 std::map。该列表包含人员(用于有序访问),映射用于将 UniqueID 映射到对列表项的引用。更新“容器”通常涉及更新 map 和列表。

它有效,但我觉得应该有一种更聪明的方法来实现它,也许是 boost:bimap。有什么建议吗?

编辑:我对“订购”的要求有些困惑。解释一下,对象是从文件中按顺序流入的,容器中项目的“顺序”应该与文件顺序相匹配。顺序与 ID 无关。

最佳答案

boost:bimap 是最明显的选择。 bimap 基于boost::multi_index,但bimap 简化了语法。就我个人而言,我更喜欢 boost::multi_index 而不是 boost::bimap 因为它可以在未来轻松地向 Person 结构添加更多索引.

关于c++ - 哪个 STL 容器用于具有基于 key 的访问的有序数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3228083/

相关文章:

C++ 使用 std::pair 模板特化定义树节点数据结构

azure - 部署 Azure 容器而不运行它们

c++ - c++-将vector <T>转换为vector <array <T >>

c++ - "Vector Iterators Incompatible"计算两个迭代器之间的距离时

docker - Mac 2010之前的Docker?

javascript - HTML5 中的图像数组

c++ - 字符串替换和奇怪的字符

c++ - odeint 隐式欧拉简单示例

c++ - 如何封装两个容器之间传输的字节

c++ - C++ 中引用的奇怪行为