我有一个带有2个成员变量的类Student
,其中一个是grade
。我由相应的构造函数创建了一些学生,然后将它们放在list<Student>
中。然后,我想在stl sort()
库中使用<algorithm>
方法,并根据学生的成绩而不是其姓名对学生进行排序。但是我不知道该如何告诉sort()函数-我应该使用其他参数还是有其他方法?
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
class Student {
string name;
double grade;
public:
Student(string n, double g) {
name = n;
grade = g;
}
double getGrade() {
return grade;
}
};
int main()
{
list<Student> sp;
Student s1("Steve", 4.50), s2("Peter", 3.40), s3("Robert", 5);
sp.push_back(s1);
sp.push_back(s2);
sp.push_back(s3);
//I want to sort the list by the student's grades - how can I tell this to the sort() method?
sort(sp.begin(), sp.end());
}
答案 0 :(得分:1)
提供要排序的谓词。并将sp
更改为std::vector
。 Lambda会做的很好:
std::sort(sp.begin(), sp.end(),
[](const auto& lhs, const auto& rhs) {
return lhs.getGrade() < rhs.getGrade();
});