c++map按value排序
时间: 2023-08-01 16:12:38 浏览: 66
C++ 中的 map 容器是按键(key)排序的,因此如果你想按值(value)排序,需要将键值对(key-value pair)调换位置,也就是将原本的值作为键,原本的键作为值。然后可以使用 STL 中的 sort 函数对这些键值对进行排序。
以下是一个示例代码,假设你有一个 map 容器 `myMap`:
```c++
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
// 定义一个用于比较 map 中元素的函数
bool compare(const pair<string, int>& p1, const pair<string, int>& p2) {
return p1.second < p2.second;
}
int main() {
// 假设你的 map 容器是这样的
map<string, int> myMap = {
{"apple", 5},
{"banana", 3},
{"orange", 2},
{"pear", 1},
{"watermelon", 7}
};
// 定义一个 vector 用于保存键值对
vector<pair<string, int>> vec;
// 将 map 中的元素复制到 vector 中
for (const auto& p : myMap) {
vec.emplace_back(p);
}
// 对 vector 中的元素按值进行排序
sort(vec.begin(), vec.end(), compare);
// 输出排序后的结果
for (const auto& p : vec) {
cout << p.first << " " << p.second << endl;
}
return 0;
}
```
上述代码会输出:
```
pear 1
orange 2
banana 3
apple 5
watermelon 7
```
其中 `compare` 函数用于比较键值对中的值,`vec` 向量保存了键值对,`sort` 函数按值排序,最后输出排好序的键值对。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)