c++中使用std::sort对带整型数据的结构体数组进行排序,整型数据有重复
时间: 2024-11-27 22:12:11 浏览: 28
在C++中,如果你有一个包含整数和另一个成员(例如其他数据类型)的结构体数组,并且你想根据整数值进行排序,可以借助`std::sort`函数,但是标准库本身并不直接支持结构体作为排序键。你需要提供一个比较函数(也叫`Comparator`),它告诉`std::sort`如何根据整型数据比较两个结构体。
下面是一个例子,假设有一个`Student`结构体,包含姓名`name`和成绩`score`:
```cpp
#include <algorithm>
#include <iostream>
struct Student {
std::string name;
int score;
};
bool compareStudents(const Student& a, const Student& b) {
return a.score < b.score;
}
int main() {
Student students[] = {{"Alice", 85}, {"Bob", 92}, {"Charlie", 88}, {"Alice", 90}}; // 注意有两个名字相同的"Alice"
size_t count = sizeof(students) / sizeof(students[0]);
std::sort(students, students + count, compareStudents);
// 现在数组按照score升序排列
for (const auto& student : students) {
std::cout << "Name: " << student.name << ", Score: " << student.score << std::endl;
}
return 0;
}
```
阅读全文