C++利用map比较函数

一、map比较函数

       利用map在插入键值对时会自动排序,我们可以灵活的实现对数据的各种排序要求。如排序并获得排序前对应的角标索引, 不排序获得排序后的名次。

二、代码试下

   下面是使用map获得排序名次的一个示例:

#include <iostream>
#include <vector>
#include <map>
 
using namespace std;
 
class a
{
	public:
	struct strA
	{
		double d;
		int I;
	};
};
 
int main()
{
	vector<a::strA> a;
	a.resize(5);
	a[0].d = 2;
	a[1].d = 3;
	a[2].d = 0;
	a[3].d = -1;
	a[4].d = 8.4;
	map<double,int> temp;
	for(int i = 0;i < a.size();++i)
		temp.insert(make_pair(a[i].d,i));	//数据放入map中会自动按键值升序排序
	int i = a.size();
	for(map<double,int>::iterator it = temp.begin();it != temp.end();++it)
	{
		a[it->second].I = i;
		i--;
	}
	for(int i = 0;i < a.size();++i)
		cout<<a[i].d<<","<<a[i].I<<endl;
 
    return 0;
}

     代码执行结果如下:

2,3
3,2
0,4
-1,5
8.4,1

       前面是需要排序的数( strA.d ),后面是对应的排序名次( strA.i )。 实际上map的比较函数是可以自定义的,利用这一点我们可以更灵活的进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大王算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值