Rod*_*ddy 9 c++ containers stl
假设我有一个Person对象的集合,每个对象看起来像这样:
class Person
{
string Name;
string UniqueID;
}
Run Code Online (Sandbox Code Playgroud)
现在,对象必须存储在一个容器中,这个容器允许我对它们进行排序,这样我就可以给项目X轻松找到项目X + 1和X-1.
但是,我还需要基于UniqueID的快速访问,因为集合将很大并且线性搜索不会削减它.
我当前的'解决方案'是将std :: list与std :: map结合使用.该列表包含Persons(用于有序访问),该映射用于将UniqueID映射到对列表项的引用.更新"容器"通常涉及更新地图和列表.
它有效,但我觉得应该有一个更聪明的方法,也许boost:bimap
.建议?
编辑:关于我对"订购"的要求存在一些困惑.为了解释,对象从文件顺序流式传输,容器中项目的"顺序"应与文件顺序匹配.订单与ID无关.
boost:bimap
是最明显的选择.bimap
是基于boost::multi_index
,但bimap
具有简化的语法.我个人更喜欢boost::multi_index
,boost::bimap
因为它将来可以轻松地为Person
结构添加更多的索引.