我有一个向量,它将学生存储为对象。每个学生对象都有包含用户输入的成绩的数据,用户输入4个成绩并获得一个总成绩。我希望能够在列表中从最高到最低对这些数据进行排序,但我很难弄清楚,这就是我迄今为止为函数所做的,但它没有运行,它返回了cout与操作数不匹配的错误。我相信还有更好的方法,任何帮助都将不胜感激!
static void compare(vector<Student>& students) {
vector<Student> students{};
sort(students.begin(), students.end());
cout << "Sorted n";
for (auto x : students) {
cout << x << " ";
}
}
编译器不知道如何比较学生。有几种选择。首先,您可以定义一个比较运算符:
bool operator < (const Student&, const Student&);
接下来,您可以为sort
函数的一个调用定义一个比较操作:
sort(students.begin(), students.end(), [](auto &a, auto &b) { return ...; });