c++ unordered_map 按value排序
时间: 2023-11-01 11:50:51 浏览: 200
对map里面的value进行排序
要按照value对C++的unordered_map进行排序,可以使用以下两种方法:
第一种方法是使用一个临时的vector<pair<type, type>>容器。遍历unordered_map,将每个键值对插入到vector中。然后使用sort函数对vector进行排序,排序的依据是pair的第二个元素(即value)。例如:
```c++
std::vector<std::pair<int, int>> tmp;
for (auto& i : unordered_map) {
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;
});
```
第二种方法是使用transform函数和一个临时的map。首先创建一个临时的map,然后使用transform函数将unordered_map中的元素插入到临时map中。通过交换pair的first和second,可以实现按照value排序的目的。例如:
```c++
std::map<int, int> tmp;
std::transform(unordered_map.begin(), unordered_map.end(), std::inserter(tmp, tmp.begin()), [](std::pair<int, int> a) {
return std::pair<int, int>(a.second, a.first);
});
```
需要注意的是,第二种方法需要包含<algorithm>和<iterator>头文件。另外,C++中的transform函数类似于Python中的map函数。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文