关于运算符重载的一些疑问,请求大佬帮助
  • 板块P1104 生日
  • 楼主Allorry
  • 当前回复6
  • 已保存回复6
  • 发布时间2022/3/19 08:10
  • 上次更新2023/10/28 06:15:48
查看原帖
关于运算符重载的一些疑问,请求大佬帮助
592223
Allorry楼主2022/3/19 08:10

我是拷贝了一个大佬的函数,第一次接触用运算符重载解题,于是请问大佬们:

  1. 这个重载用三条if构成,如果全都不满足条件,他不会报错吗?他会返回true吗?

  2. 请问sort函数是怎么用到这个运算符的呢?

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct stu {
	string name;
	int year, month, day;
	int num;  //输入的序号
	bool operator <(const stu& tmp) {
		if (year != tmp.year) return year < tmp.year;
		if (month != tmp.month) return month < tmp.month;
		if (day != tmp.day) return day < tmp.day;
	}
};
//bool cmp(stu& a, stu& b) {
//	if (a.year < b.year) return 1;
//	if (a.year == b.year && a.month < b.month) return 1;
//	if (a.year == b.year && a.month == b.month && a.day < b.day) return 1;
//	if (a.year == b.year && a.month == b.month && a.day == b.day && a.num > b.num) return 1;
//	return 0;
//}
inline int read() {
	int s = 0, w = 1;
	char ch = getchar();
	while (ch < '0' || ch>'9') {
		if (ch == '-') w = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		s = s * 10 + ch - '0';
		ch = getchar();
	}
	return s * w;
}
int main()
{
	int n;
	stu a[105];
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i].name;
		a[i].year = read(); a[i].month = read(); a[i].day = read();
		a[i].num = i;
	}
	sort(a, a + n);
	for (int i = 0; i < n; i++) {
		cout << a[i].name;
		putchar('\n');
	}
}

2022/3/19 08:10
加载中...