在STL - C++中按成绩对学生列表进行排序?
Sorting a list of students by their grades in STL - C++?
我有一个类Student
,其中包含 2 个成员变量,其中一个是grade
。我通过相应的构造函数创建一些学生,然后将它们放入list<Student>
中。然后,我想在 stl<algorithm>
库中使用sort()
方法,并按成绩而不是姓名对学生进行排序。但是我不知道如何告诉 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());
}
提供要排序的谓词。并将sp
改为std::vector
.一个 lambda 会做得很好:
std::sort(sp.begin(), sp.end(),
[](const auto& lhs, const auto& rhs) {
return lhs.getGrade() < rhs.getGrade();
});
相关文章:
- 试图在c++中对数字列表进行排序
- 在STL - C++中按成绩对学生列表进行排序?
- 使用列表 STL 递归进行插入排序
- 列表 iter 不取消引用 使用列表进行插入排序
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 如何按键对 std::对列表进行排序?
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 如何使用cpp编写选择排序算法以降序对元素列表进行排序?
- 使用自定义比较函数在类内进行列表排序
- 列表::排序更改值C
- 对于列表排序,有没有办法使用相同的参数让多个运算符重载?
- 在 c++ 中将数字从列表排序到数组中的气泡排序问题
- 运算符<用于列表排序
- C++列表排序功能
- C++ STL 算法(列表排序)OpenMP/多线程实现
- 列表排序不正确
- 列表排序和结构体向量排序之间的性能差距.c++
- 对抽象数据类型的stl::列表排序
- C++std列表排序使用自定义比较器,该比较器依赖于对象实例的成员变量