c++ std::map 关于迭代器顺序的问题

标签 c++ map iterator

我是一名 C++ 新手,正在尝试使用 map ,以便我可以不断地查找 find() 方法。

问题是,当我使用迭代器遍历 map 中的元素时,元素出现的顺序与它们在 map 中的放置顺序不同。

有没有办法在不维护另一种数据结构的情况下实现有序迭代,同时还保留恒时查找的能力?

请告诉我。

谢谢, jbu

编辑:感谢您让我知道 map::find() 不是常数时间。

最佳答案

有没有办法在不维护另一种数据结构的情况下,实现有序迭代,同时还保留恒时查找的能力?

不,那是不可能的。为了获得高效的查找,容器需要以一种使高效查找成为可能的方式对内容进行排序。对于 std::map,这将是某种类型的排序顺序;对于 std::unordered_map,这将是一个基于键的散列的顺序。

无论哪种情况,顺序都将不同于它们的添加顺序。

关于c++ std::map 关于迭代器顺序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495802/

相关文章:

python - 连接两个列表的笛卡尔积的字符串(最好没有 for 循环)

C++ 11 设置奇怪的行为

c++ - 搜索遍历多个列表的项目

C++ 在运行之间清除文本文件的内容导致只写入最后一行

c++ - 匹配 Eigen 和 Ceres-Solver 版本的最简单方法是什么?

c++ - map<string, string[]> 在 C++ 中可能吗?

scala - Scala映射到HashMap

c++ - 为什么我不能使用 strerror?

c++ - 函数模板的部分排序 - 模棱两可的调用

java - 有没有可以代替键的排序Map