map<string,int>按照int从大到小排序要怎么实现
时间: 2023-06-06 15:07:34 浏览: 51
您可以使用STL中的sort函数和自定义的比较函数来实现按int值从大到小排序的功能。下面是示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
bool cmp(const pair<string, int>& x, const pair<string, int>& y) {
return x.second > y.second;
}
int main() {
map<string, int> mp;
mp["apple"] = 5;
mp["banana"] = 3;
mp["cherry"] = 7;
mp["date"] = 1;
// 将map转换为vector,然后使用sort函数进行排序
vector<pair<string, int>> vec(mp.begin(), mp.end());
sort(vec.begin(), vec.end(), cmp);
// 输出排序结果
for (auto& item : vec) {
cout << item.first << " " << item.second << endl;
}
return 0;
}
```
以上代码中,我们在sort函数中传入了自定义的比较函数cmp,比较函数的作用是根据pair的第二个元素(也就是int值)从大到小排序。最后把排序后的vector再转回map便可以得到按int从大到小排列的map了。