如何按升序使用键在unordered_map中输出元素

how to output elements in unordered_map with keys in ascending order?

本文关键字:map 输出 元素 unordered 升序 何按      更新时间:2023-10-16

我在unordered_map中存储了一些中间结果。现在,当尝试输出它时,它显示键是按降序排列的。有没有办法以其他顺序显示它?如何?

您可以将

元素复制到std::vector然后使用std::sort根据您的偏好升序/降序对这个向量进行排序,然后输出它:

std::unordered_map<int, int> um {{2, 3}, {6, 7}, {0, 5}};
std::vector<std::pair<int, int>> sorted_elements(um.begin(), um.end());
std::sort(sorted_elements.begin(), sorted_elements.end());

现场演示

至于为什么你不能对无序STL包含器进行排序,看看这里

如果您希望按排序顺序保留中间数据,请使用 std::map<key,value> 而不是std::unordered_map 。默认情况下,它将使用 std::less<> 对键进行排序,因此您将按升序获得结果。

std::unordered_map是哈希表数据结构的实现,因此它将根据 std::unordered_map 使用的哈希值在内部排列元素。 但以防万一std::map它通常是一个红黑二叉树实现。

你不能。

无序地图就是:无序。

您不能对迭代顺序做出任何假设。

与法线贴图相比,这是对无序贴图的某些操作效率提高的权衡。如果你想要订购,你将不得不牺牲这些增加。