STL-map的简单用法(以及如何使用sort将map进行排序)

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
		*/
}
发布了35 篇原创文章 · 获赞 34 · 访问量 1872

猜你喜欢

转载自blog.csdn.net/zhq215/article/details/104629745
今日推荐