如何按升序使用键在unordered_map中输出元素
how to output elements in unordered_map with keys in ascending order?
我在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
它通常是一个红黑二叉树实现。
你不能。
无序地图就是:无序。
您不能对迭代顺序做出任何假设。
与法线贴图相比,这是对无序贴图的某些操作效率提高的权衡。如果你想要订购,你将不得不牺牲这些增加。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 使用一个考虑到std::map中键值的滚动或换行的键
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- Map.find()如何工作,查看输出的组件
- 使用d3d11_mapped_subresource和map/umap时,混合纹理输出
- C++:使用 fstream、map 和输出
- 嵌套 std::map 的输出存在问题
- ofstream 输出 std::map<UnicodeString, UnicodeString> 产生地址而不是字符串
- 在c++中使用map时输出顺序错误
- 数据将奇怪的数字输出到文件,MAP C++