map是不可排序的,可是凡事都不是绝对的,现在我就告诉大家如何将map进行简单的排序以及其的简单用法。
一.map的常用方式:
mapname.clear() :清空map
mapname.empty() :判断m是否为空
mapname.begin() : 返回指向map头部的迭代器
mapname.end() :返回指向map末尾的迭代器
mapname.rbegin() :返回一个指向map尾部的逆向迭代器
mapname.rend() :返回一个指向map头部的逆向迭代器
mapname.erase() :删除指定元素
mapname.find() :查找指定元素
mapname.insert() :插入元素
mapname.size() :返回元素的个数
mapname.swap() :交换两个map
#include<bits/stdc++.h>
using namespace std;
int main()
{
/*key的值不可重复,并且是按照key的增序排列。看打印结果你就明白了*/
map<int,int> s;
s[1]=1;//这种类似于数组的赋值形式最常用。
s[6]=2;
s[3]=3;
s[7]=4;
s[3]=5;
s.insert(make_pair(5,10));//这种用法交少,但比较容易。
for(map<int,int>::iterator it=s.begin();it!=s.end();++it)//利用迭代器进行输出。
cout<<it->first<<" "<<it->second<<endl;
/*
输出结果:
1 1
3 5
5 10
6 2
7 4
*/
}
二.重新将map进行排序。
先利用vector进行储存,再进行排序。
#include<bits/stdc++.h>
using namespace std;
bool cmp(pair<int,int> a , pair<int,int> b)
{
return a.first>b.first;//增序为 a.first<b.first(若是想排序的第二个数字,把first改成second即可)
}
int main()
{
map<int,int> s;
s[1]=4;
s[2]=3;
s[3]=6;
s[4]=7;
s[5]=1;
vector< pair<int,int> > v(s.begin(),s.end());//利用vector容器储存后再进行排序。
sort(v.begin(),v.end(),cmp);
for(vector< pair<int,int> >::iterator it=v.begin();it!=v.end();++it)
cout<<it->first<<" "<<it->second<<endl;
/*打印结果:
5 1
4 7
3 6
2 3
1 4
*/
}