unordered_map按second排序
时间: 2023-10-17 09:37:27 浏览: 124
ordered-map:保留插入顺序的C ++哈希映射和哈希集
要按照 `unordered_map` 的 `second` 进行排序,你可以将 `unordered_map` 中的键值对复制到一个 `vector` 中,并使用自定义比较函数对 `vector` 进行排序。
以下是一个示例代码:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) {
return a.second < b.second;
}
int main() {
std::unordered_map<int, int> myMap;
myMap.insert({1, 5});
myMap.insert({2, 3});
myMap.insert({3, 8});
myMap.insert({4, 2});
std::vector<std::pair<int, int>> vec(myMap.begin(), myMap.end());
// 使用自定义比较函数对 vector 进行排序
std::sort(vec.begin(), vec.end(), compare);
// 输出排序后的结果
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在这个示例代码中,`myMap` 是一个 `unordered_map`,其中存储了一些键值对。我们首先将所有的键值对复制到了 `vec` 这个 `vector` 中,然后使用自定义的比较函数 `compare` 对 `vec` 进行排序。最后,我们遍历排序后的 `vec` 并输出结果。按照 `second` 的值进行排序后,输出如下:
```
4: 2
2: 3
1: 5
3: 8
```
请注意,由于 `unordered_map` 是无序的,排序后的结果将会按照 `second` 的值从小到大进行排序。如果 `second` 的值有相同的情况,那么它们的相对顺序可能会发生变化。
阅读全文