我是一名 C++ 新手,正在尝试使用 map ,以便我可以不断地查找 find() 方法。
问题是,当我使用迭代器遍历 map 中的元素时,元素出现的顺序与它们在 map 中的放置顺序不同。
有没有办法在不维护另一种数据结构的情况下实现有序迭代,同时还保留恒时查找的能力?
请告诉我。
谢谢, jbu
编辑:感谢您让我知道 map::find() 不是常数时间。
最佳答案
有没有办法在不维护另一种数据结构的情况下,实现有序迭代,同时还保留恒时查找的能力?
不,那是不可能的。为了获得高效的查找,容器需要以一种使高效查找成为可能的方式对内容进行排序。对于 std::map,这将是某种类型的排序顺序;对于 std::unordered_map,这将是一个基于键的散列的顺序。
无论哪种情况,顺序都将不同于它们的添加顺序。
关于c++ std::map 关于迭代器顺序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495802/