c++结构体和自定义函数排序
时间: 2024-10-28 20:07:56 浏览: 54
在C++中,结构体(struct)是一种用户自定义的数据类型,用于组合不同类型的数据成员,形成一个新的数据实体。若想对结构体数组或结构体变量按照某个成员进行排序,可以借助标准模板库(STL)提供的算法,比如`std::sort()`。
自定义函数排序通常涉及提供一个比较函数(comparison function),该函数接受两个结构体实例作为输入,并返回一个布尔值表示它们的相对顺序。例如:
```cpp
#include <algorithm>
#include <iostream>
// 定义结构体
struct Person {
std::string name;
int age;
// 按照年龄升序的默认比较函数
bool operator<(const Person& other) const {
return age < other.age;
}
};
// 自定义函数排序示例
void sortPersonByAge(std::vector<Person>& people) {
std::sort(people.begin(), people.end());
}
int main() {
std::vector<Person> people = {{"Alice", 25}, {"Bob", 30}, {"Charlie", 20}};
sortPersonByAge(people);
for (const auto& person : people) {
std::cout << "Name: " << person.name << ", Age: " << person.age << std::endl;
}
return 0;
}
```
在这个例子中,我们通过`operator<`重载了小于运算符,使得结构体`Person`可以直接用于`std::sort()`进行按年龄升序排序。如果你想降序排列,只需将`age < other.age`改为`age > other.age`即可。
阅读全文