C++operator(重载操作符)及解决成绩排序问题

operator是C++中的关键字,表示一个运算符函数,用于支持用户自己定义的class的基本操作,如比较大小、判断是否相等。
举一个简单易懂的例子,加法运算符“+”对于整数、单精度数、双精度数等的操作是不同的,而C++语言本身已经对不同类型的变量进行了重载运算符,因此+能够用于int、float、double以及其他内部定义的变量。

操作符重载的目的:扩展C++原先已经提供的运算符的适用范围,以用于类所表示的抽象数据类型。同一个运算符对不同类型的操作数进行的操作是不同的。
操作符被重载的基本前提有三:只为自定义的类型重载操作符、不能对操作符的语法(如优先级、结核性、操作数个数、语法结构)和语义进行颠覆、不能引入新的自定义操作符。

例题:通过构建结构体重载运算符排序学生成绩,使得按总分自上而下的顺序排列,如果总分相等则数学成绩高的排在前面
代码实现如下:

#include<iostream>
#include<algorithm>
using namespace std;

struct score {
	int math, eng;
	bool operator<(const score& cmp)const {
		return math + eng == cmp.math + cmp.eng ? math > cmp.math:math + eng > cmp.math + cmp.eng;
	}
}a[50];


int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i].math >> a[i].eng;
	}
	sort(a, a + n);
	for (int i = 0; i < n; i++) {
		cout << a[i].math << " " << a[i].eng << endl;
	}
	return 0;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值