我正在寻找一个容器,它提供了std :: map之类的接口,但保持了插入元素的顺序。由于地图中的元素不会太多,因此查找性能不是一个大问题。将 boost :: unordered_map 用于此案件?即它是否保持插入顺序。我是新手来推动图书馆,因此想知道'无序'的确切含义是什么?

有帮助吗?

解决方案

unordered_map不保持插入顺序。在这种情况下无序意味着元素的可观察顺序(即,当您枚举它们时)是未指定和任意的。事实上,我希望unordered_map中元素的顺序可以在地图的生命周期中发生变化,因为在调整地图大小时会重新进行重新设定(虽然这依赖于实现)

其他提示

了解 Boost.Multiindex 。它使您有机会创建一个容器,该容器既可以按键访问数据(如std :: map),也可以按顺序访问数据(如std :: list)。

这是示例

上次我需要时,我使用了std::vector< std::pair<const Key, Value> >。我不需要太多的std::map界面,所以我没有打扰是,但似乎应该相当容易打一个类似地图的界面。

另外,请务必查看此问题的答案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top