C++ 的 qsort
函数是一个通用的排序函数,它要求你提供一个比较函数,以便确定元素之间的顺序。对于复杂数据类型,你需要定义一个比较函数,该函数接受两个参数并返回一个整数,表示它们之间的顺序关系。
以下是一个使用 qsort
对结构体进行排序的示例:
#include
#include
struct Person {
std::string name;
int age;
};
// 自定义比较函数
int comparePersons(const void *a, const void *b) {
const Person *personA = static_cast(a);
const Person *personB = static_cast(b);
if (personA->age < personB->age) {
return -1;
} else if (personA->age > personB->age) {
return 1;
} else {
return 0;
}
}
int main() {
Person people[] = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};
int n = sizeof(people) / sizeof(Person);
// 使用 qsort 对数组进行排序
qsort(people, n, sizeof(Person), comparePersons);
// 输出排序后的结果
for (int i = 0; i < n; ++i) {
std::cout << people[i].name << ": " << people[i].age << std::endl;
}
return 0;
}
在这个示例中,我们定义了一个名为 Person
的结构体,包含 name
和 age
两个成员。我们为 qsort
提供了一个自定义比较函数 comparePersons
,该函数根据 age
成员对 Person
结构体进行比较。然后,我们使用 qsort
对 people
数组进行排序,并输出排序后的结果。