c++结构体排序(1条件,多条件)

最近做题的时候总会遇到排序问题,同样一个问题用结构体排序和用数组做差的不仅仅是代码的长度,还有理解的难易程度,很明显,用结构体排序更简单易懂。
但结构体不能直接用algorithm头文件里的sort函数,需要我们自己补充一个函数。这里就给大家一一列举出来。

一个判断条件

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct cj
{
	int num;
	string name;
	int score;
};
bool cmp(cj a,cj b)
{
	return a.score>b.score;
}
int main()
{
	cj x[5];	//这里的5可以手动输入n代替
	for(int i=0;i<5;i++)
	 cin>>x[i].name>>x[i].score>>x[i].num;
	sort(x,x+5,cmp);
	cout<<'\n';
	for(int i=0;i<5;i++)
	cout<<x[i].name<<'\t'<<
	x[i].score<<'\t'<<x[i].num<<'\n';
	system("pause");
	return 0;	
}

这里的判断条件为score,效果如图
在这里插入图片描述

多个判断条件(以两个为例)

还是以上的代码,只要把cmp函数稍做修改就可以了。
这里我们的第二给判断条件为num.

bool cmp(cj a,cj b)
{
	if(a.score!=b.score)
	return a.score>b.score;
	else
	return a.num>b.num;
}

效果如图
在这里插入图片描述
有更多条件也可以仿照两个条件的进行修改,
要强调的是,多个条件中,越靠前的所起作用越大。

这里对于初学者不一定要懂为什么要这样写,只需要会用就好了。等到熟练之时可以再找资料更深层次地理解。
有什么问题欢迎在评论区与我交流。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值