我是拷贝了一个大佬的函数,第一次接触用运算符重载解题,于是请问大佬们:
这个重载用三条if构成,如果全都不满足条件,他不会报错吗?他会返回true吗?
请问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');
}
}