写了个class重载<号,但是我明明写了成绩降序号码升序,但只生效了成绩降序,这是为什么呢?
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
class score {
public:
int number;
int grade;
score(int number = 0, int grade = 0) {
this->number = number;
this->grade = grade;
}
friend bool operator<(score& a, score& b) {
if (a.grade < b.grade) {
return true;
} else if (a.grade == b.grade) {
if (a.number > b.number) {
return true;
} else {
return false;
}
} else {
return false;
}
}
};
void greater_sort(score *a, int n) {
for (int i = 0; i <= n - 1; i++) {
for (int j = i + 1; j <= n - 1; j++) {
if (a[i].grade < a[j].grade) {
swap(a[i], a[j]);
}
}
}
}
int main() {
int n, m;
cin >> n >> m;
score a[5005];
for (int i = 0; i <= n - 1; i++) {
int n, g;
cin >> n >> g;
score s(n, g);
a[i] = s;
}
greater_sort(a, n);
int linenumber = floor(m * 1.5);
if (linenumber > n) {
linenumber = n;
}
int actual_number = linenumber;
int linescore = a[linenumber - 1].grade;
for (int i = linenumber; i <= n - 1; i++) {
if (a[i].grade == linescore) {
actual_number++;
} else {
break;
}
}
cout << linescore << " " << actual_number << endl;
for (int i = 0; i <= actual_number - 1; i++) {
cout << a[i].number << " " << a[i].grade << endl;
}
return 0;
}