c++中map unordered_map按照value排序几种优雅的写法
程序员文章站
2024-02-17 15:25:58
...
我们首先假设我们要操作的map
、unordered_map
对象是m
。
第一种做法是先建立一个vector<pair<type, type>>
的容器。
std::vector<std::pair<int, int>> tmp;
for (auto& i : m)
tmp.push_back(i);
std::sort(tmp.begin(), tmp.end(),
[=](std::pair<int, int>& a, std::pair<int, int>& b) { return a.second < b.second; });
第二种写法更加符合现代c++
。首先建立一个临时map
,然后通过transform
函数将m
中的元素inserter
进tmp
中。通过将map
中元素的first
和second
交换达到,对value
排序的目的。
std::map<int, int> tmp;
std::transform(m.begin(), m.end(), std::inserter(tmp, tmp.begin()),
[](std::pair<int, int> a) { return std::pair<int, int>(a.second, a.first); });
不过第二种写法要加头文件#include <algorithm>
和#include <iterator>
。c++
中的transform
有点类似于python
中的map
。
上一篇: Main函数参数argc,argv
下一篇: ES6 Array.from方法用法总结