c++ map 按照值排序
时间: 2025-01-30 22:53:44 浏览: 48
### 对C++ `map` 容器按值排序
在C++中,标准库提供的`std::map`默认情况下仅支持基于键(key)的排序。为了实现基于值(value)的排序,通常的做法是先将`map`中的元素转换成一个由`pair`组成的向量(vector),之后通过自定义比较函数来对这个向量进行排序。
下面是一个具体的例子展示如何完成这一操作:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
// 自定义比较函数用于根据value降序排列
bool cmp(const std::pair<int, int>& lhs, const std::pair<int, int>& rhs){
return lhs.second > rhs.second;
}
int main(){
// 创建并填充map
std::map<std::string, int> myMap = {
{"apple", 3},
{"banana", 1},
{"orange", 2}
};
// 将map转为vector<pair<string,int>>
std::vector<std::pair<std::string, int>> vec(myMap.begin(), myMap.end());
// 使用sort算法和自定义比较函数对vec排序
std::sort(vec.begin(), vec.end(), [](const auto& l, const auto& r){return l.second > r.second;} );
// 输出结果
for(auto& p : vec){
std::cout << "{" << p.first << ": " << p.second << "}\n";
}
return 0;
}
```
此代码片段展示了如何创建一个简单的字符串到整数映射(`myMap`),将其内容复制到一个`vector`对象中,并利用lambda表达式的简洁方式作为第三个参数传递给`std::sort()`来进行排序[^2]。
阅读全文
相关推荐
















