c++ map能排序吗
时间: 2024-01-31 14:04:21 浏览: 261
c++的map容器是按照key来排序的,而不是按照value来排序的。如果你想对map中的value进行排序,你可以将map中的键值对复制到一个vector容器中,然后使用sort函数对vector进行排序。你需要定义一个自定义的排序规则(也称为仿函数),这样sort函数才知道按照什么顺序进行排序。下面是一个示例代码:
```c++
#include<bits/stdc++.h>
using namespace std;
bool cmp(const pair<string, int>& a, const pair<string, int>& b){
return a.second > b.second;
}
int main(){
map<string, int> m;
m["asas"] = 18;
m["ioio"] = 90;
m["cj"] = 89;
vector<pair<string, int>> v(m.begin(), m.end());
sort(v.begin(), v.end(), cmp);
for(int i = 0; i < v.size(); i++){
cout << v[i].first << " " << v[i].second << endl;
}
return 0;
}
```
这段代码会将map中的键值对复制到vector中,并按照value的降序进行排序。然后,遍历vector并输出排序后的结果。
阅读全文