map容器的排序(升序和降序) c++ 通俗易懂

#include<iostream>//c++中标准的输入和输出流
using namespace std;//引用标准的名空间std
#include<map>//引用map容器必须要包含map容器的头文件
class compare//一个名叫compare的类
{
public://public下的作用域在类内类外都可以进行访问
	bool operator()(int m, int n)const//注意要在后面加const
	{
		return m > n;//降序排列返回的就两个值中的较大值
	}
};
void printmap(map<int, int>m)
{//for循环第一个参数是找到起始迭代器的位置
		//	//第二个参数是  for循环退出的条件,
		//	//d.end()指向的是终止迭代器的下一个位置,
		//那么退出的条件该迭代器已经到了终止迭代器的位置了
	for (map<int, int>::iterator it = m.begin(); it != m.end(); it++)
	{
		cout << (*it).first << "\t" << (*it).second << endl;
	}
	//(*it).first是引用map容器内的第一个参数;叫做键值,key
	//(*it).second引用map容器的第二个参数;叫做实值,value
	//其中键值起到索引的作用
	cout << endl;//在容器内所有元素都打印完成后打印一个换行
}
void test01()
{
	map<int, int>m;
	m.insert(make_pair(10, 100));
	m.insert(make_pair(2000, 100));
	m.insert(make_pair(340, 100));
	m.insert(make_pair(90, 100));
	cout << "升序排列" << endl;
	printmap(m);//默认时按照键值进行升序排列的
	map<int, int, compare>m2;//注意这个有谓词的map容器的打印是要单独写的
	m2.insert(make_pair(10, 100));
	m2.insert(make_pair(2000, 100));
	m2.insert(make_pair(340, 100));
	m2.insert(make_pair(90, 100));
	cout << "降序排列" << endl;//降序排列在打印容器内的所有元素的时候,必须重新指定打印的规则
	for (map<int, int, compare>::iterator it = m2.begin(); it != m2.end(); it++)
	{//在实现降序的时候,在mapmap容器内有三个参数,第三个参数时谓词,也就是仿函数
		cout << (*it).first << "\t" << (*it).second << endl;
    }
	cout << endl;//在容器内所有元素都打印完成后打印一个换行
}
int main(void)//主函数
{
	test01();//调用函数
	system("pause");
	//system("pause")和system("pause")作用和效果一样,因为dos命令是不区分大小写的。
					//该语句是暂停的意思:等待用户信号;不然控制台程序会一闪即过,你来不及看到执行结果
	return 0;//程序正常运行返回一个0
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值