使用模板函数sort对学生成绩进行排序,两个结构体比较使用模板函数sort对学生成绩进行排序,两个结构体比较
时间: 2024-11-05 14:34:34 浏览: 7
在C++中,可以使用STL(Standard Template Library)的`std::sort`模板函数对一组数据进行排序,包括不同类型的数据。如果要对包含学生成绩的自定义结构体进行排序,首先要定义一个适配器或比较函数,以便`sort`知道如何比较两个结构体实例。
假设我们有两个结构体,如`Student`,它包含了学生的姓名和成绩:
```cpp
struct Student {
std::string name;
float score;
};
```
如果你想按照成绩对学生进行升序排序,你可以创建一个比较函数模板`compare_scores`,然后将这个函数作为第三个模板参数传递给`sort`:
```cpp
template <typename T>
bool compare_scores(const T& a, const T& b) {
return a.score < b.score; // 按照score字段降序排列
}
int main() {
std::vector<Student> students = {{"Alice", 85.0}, {"Bob", 90.0}, {"Charlie", 78.0}};
std::sort(students.begin(), students.end(), compare_scores); // 指定比较函数
// 现在students按score降序排列了
for (const auto& student : students) {
std::cout << student.name << ": " << student.score << std::endl;
}
return 0;
}
```
阅读全文