map排序
发表于|更新于
|字数总计:774|阅读时长:4分钟|阅读量:
map对于key(键)的排序
map中的key 默认排序
#include<bits/stdc++.h> using namespace std;
map<int,string>m; int main() { m[1]="iui"; m[87]="sjddd"; m[2]="jsd"; m[67]="yuuuu"; for(auto item: m) { cout<<item.first<<" "<<item.second<<endl; } return 0; }
|
key的自定义排序
#include<bits/stdc++.h> using namespace std;
struct rule{ bool operator()(const string& a,const string& b) const { return a>b; } }; int main() { map<string,int,rule>m; m["a"]=199; m["c"]=99; m["b"]=878; m["ab"]=1515; for(auto item: m) { cout<<item.first<<" "<<item.second<<endl; } return 0; }
|
key是结构体(仿函数)
#include<bits/stdc++.h> using namespace std;
struct node{ string name; int score; }; struct rule{ bool operator()(const node& a,const node& b) const { if(a.score==b.score){ return a.name>b.name; } return a.score>b.score; }
}; int main() { node stu; map<node,int,rule>m; stu.name="abc"; stu.score=88; m[stu]=1212; stu.name="acd"; stu.score=88; m[stu]=1213; stu.name="bcbc"; stu.score=100; m[stu]=1214; stu.name="zzzzzz"; stu.score=1000; m[stu]=8989; for(auto item: m) { cout<<item.first.name<<" "<<item.first.score<<endl; } return 0; }
|
key是结构体(结构体内自定义大小)
#include<bits/stdc++.h> using namespace std;
struct node{ int score; string name; bool operator <(const node &s)const{ if(score!=s.score)return score>s.score; return name>s.name; } }; int main() { map<node,int>m; node u; u.name="abc"; u.score=99; m[u]=12; u.name="bcd"; u.score=99; m[u]=13; u.name="bbb"; u.score=100; m[u]=14; u.name="yuy"; u.score=15; m[u]=6666;
for(auto item: m) { cout<<item.first.name<<" "<<item.first.score<<endl;
} return 0; }
|
map对于value(值)排序
需要用到vector容器和sort函数,sort函数需要自定义排序规则。其中使用sort可以同时也可以对key进行排序。
#include<bits/stdc++.h> using namespace std;
bool cmp(const pair<string,int> a,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); map<string,int>::iterator it; for(int i=0;i<v.size();i++){ cout<<v[i].first<<" "<<v[i].second<<endl; } return 0; }
|
原博客链接
:C++中的map排序c++ map排序菜到极致就是渣的博客-CSDN博客