c++ 对unordered_map进行sort
时间: 2023-07-08 14:40:27 浏览: 256
Dictionary_2__C++_源码
`unordered_map` 是一个哈希表,它内部不是按照键值对的顺序存储的,因此不能直接对其进行排序。但是,我们可以将它转化为一个 `vector`,然后对 `vector` 进行排序。
下面是一个示例代码:
```c++
#include <unordered_map>
#include <vector>
#include <algorithm>
bool cmp(std::pair<int, int>& a, std::pair<int, int>& b) {
return a.second > b.second; // 按照值从大到小排序
}
int main() {
std::unordered_map<int, int> mp = {{1, 2}, {3, 4}, {5, 6}};
std::vector<std::pair<int, int>> vec(mp.begin(), mp.end());
std::sort(vec.begin(), vec.end(), cmp); // 排序
for (auto& p : vec) {
std::cout << p.first << " " << p.second << std::endl;
}
return 0;
}
```
这段代码将 `unordered_map` 转化为 `vector`,并按照值从大到小进行排序,最后输出结果。你可以根据自己的需求定义排序函数 `cmp`。
阅读全文