c++结构体排序练习题
时间: 2024-06-22 12:01:57 浏览: 197
数据结构-排序问题(C++)
在C++中,结构体排序练习通常涉及到如何使用标准库中的算法对包含自定义数据类型的结构体数组或容器进行排序。这里我们可以举一个简单的例子,假设有一个名为`Student`的结构体,包含`name`和`age`两个成员:
```cpp
struct Student {
std::string name;
int age;
};
```
你可以用以下几种方法对`Student`结构体数组进行排序:
1. **直接排序:**如果年龄是排序的主要依据,你可以定义一个比较函数(`compare`),然后使用`std::sort`函数:
```cpp
bool compareStudents(const Student& s1, const Student& s2) {
return s1.age < s2.age;
}
int main() {
Student students[] = {{"Alice", 20}, {"Bob", 18}, {"Charlie", 22}};
std::sort(students, students + sizeof(students) / sizeof(students), compareStudents);
// 现在students数组按年龄升序排列
}
```
2. **使用STL算法:**如果你的结构体已经实现了`<`运算符,那么可以直接使用`std::stable_sort`:
```cpp
bool studentLess(const Student& s1, const Student& s2) {
return s1.age < s2.age;
}
int main() {
std::vector<Student> students = {{"Alice", 20}, {"Bob", 18}, {"Charlie", 22}};
std::stable_sort(students.begin(), students.end(), studentLess);
}
```
3. **自定义比较器(C++11及以上):**也可以使用lambda表达式来创建一个可传递的比较器:
```cpp
int main() {
std::vector<Student> students = {{"Alice", 20}, {"Bob", 18}, {"Charlie", 22}};
std::sort(students.begin(), students.end(), [](const Student& s1, const Student& s2) {
return s1.age < s2.age;
});
}
```
阅读全文