1.map根据key自动排序
方法1:关注less
or greater
map<int,int,less<int> > mp; //按key升序
map<int,int,greater<int> > mp; //按key降序
方法2:我们可以把map序列化,放到vector,然后进行排序。
关注函数:bool cmp(const pair<int,int> &p1, const pair<int,int> &p2)
#include <bits/stdc++.h>
using namespace std;
bool cmp(const pair<int,int> &p1, const pair<int,int> &p2) {
return p1.first < p2.first; //按key升序
//return p1.first > p2.first; //按key降序
}
int main()
{
map<int,int> mp; //按key升序
//map<int,int,greater<int> > mp; //按key降序
mp[1] = 3;
mp[4] = 1;
mp[3] = 5;
mp[2] = 7;
//存放map以pair对进行存储的变量
vector<pair<int,int> > vpr;
for(map<int,int>::iterator it = mp.begin(); it != mp.end(); it++)
{
//将map值以pair形式存放在vpr中
vpr.push_back(make_pair(it->first,it->second));
}
//按自定义顺序排序
sort(vpr.begin(),vpr.end(),cmp);
//输出排序后的vpr结果
for(vector<pair<int,int> >::iterator read = vpr.begin();read != vpr.end();read++)
{
cout << read->first << " " << read->second << endl;
}
}
2.map根据value自动排序
我们可以把map序列化,放到vector,然后进行排序。
关注函数:bool cmp(const pair<int,int> &p1, const pair<int,int> &p2)
#include <bits/stdc++.h>
using namespace std;
bool cmp(const pair<int,int> &p1, const pair<int,int> &p2) {
return p1.second > p2.second;
}
int main()
{
map<int,int> mp; //按key升序
//map<int,int,greater<int> > mp; //按key降序
mp[1] = 3;
mp[4] = 1;
mp[3] = 5;
mp[2] = 7;
//存放map以pair对进行存储的变量
vector<pair<int,int> > vpr;
for(map<int,int>::iterator it = mp.begin(); it != mp.end(); it++)
{
//将map值以pair形式存放在vpr中
vpr.push_back(make_pair(it->first,it->second));
}
//按自定义顺序排序
sort(vpr.begin(),vpr.end(),cmp);
//输出排序后的vpr结果
for(vector<pair<int,int> >::iterator read = vpr.begin();read != vpr.end();read++)
{
cout << read->first << " " << read->second << endl;
}
}