C++ map排序(按照value值排序)_glp_hit_新浪博客
时间: 2023-08-12 18:06:35 浏览: 115
C++ map 根据value找key的实现
你可以使用C++ STL中的`std::map`和`std::pair`结合使用来实现按照value值排序。具体步骤如下:
1. 将`std::map`中的每个键值对(key-value pair)存储在一个`std::pair`中。
2. 将所有的`std::pair`存储在一个`std::vector`中。
3. 定义一个比较函数(comparator),用于比较两个`std::pair`的value值大小。
4. 使用`std::sort`函数对`std::vector`进行排序,排序时传入自定义的比较函数。
5. 将排好序的`std::vector`中的`std::pair`重新插入到`std::map`中。
以下是一个示例代码:
```c++
#include <iostream>
#include <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::map<int, int> myMap = {{1, 5}, {2, 3}, {3, 8}, {4, 2}, {5, 6}};
std::vector<std::pair<int, int>> vecPairs;
for (const auto& p : myMap) {
vecPairs.push_back(std::make_pair(p.first, p.second));
}
std::sort(vecPairs.begin(), vecPairs.end(), compare);
myMap.clear();
for (const auto& p : vecPairs) {
myMap.insert(p);
}
for (const auto& p : myMap) {
std::cout << p.first << " " << p.second << std::endl;
}
return 0;
}
```
输出结果为:
```
4 2
2 3
1 5
5 6
3 8
```
阅读全文