【问题标题】:boost::unordered_map maintains order of insertion?boost::unordered_map 保持插入顺序?
【发布时间】:2010-12-09 00:20:24
【问题描述】:

我正在寻找一个容器,它提供类似 std::map 的接口,但保持插入元素的顺序。由于地图中的元素不会太多,因此查找性能不是什么大问题。 boost::unordered_map 在这种情况下会起作用吗?即它是否保持插入顺序。我是 boost 库的新手,因此想知道“无序”到底是什么意思?

【问题讨论】:

  • 为什么不试试呢? :) 实验并没有那么糟糕。
  • 你想做什么?检查我对另一个问题的回答,看看它是否适用:stackoverflow.com/questions/1570349/which-stl-container
  • @LiraNuna:因为这只是告诉您当前实现中的行为,而不是告诉您是否需要并且可以依赖此特定行为?

标签: c++ boost containers


【解决方案1】:

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

这是example

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 2021-08-19
        • 1970-01-01
        • 2023-03-10
        • 2011-05-16
        • 2010-10-15
        相关资源
        最近更新 更多