boost :: unordered_map是否保持插入顺序?

时间:2009-10-22 08:38:14

标签: c++ boost containers

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

3 个答案:

答案 0 :(得分:18)

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

这是example

答案 1 :(得分:9)

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

答案 2 :(得分:6)

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

另外,请务必查看this question的答案。