C++ 的 qsort
函數是一個通用的排序函數,它要求你提供一個比較函數,以便確定元素之間的順序。對于復雜數據類型,你需要定義一個比較函數,該函數接受兩個參數并返回一個整數,表示它們之間的順序關系。
以下是一個使用 qsort
對結構體進行排序的示例:
#include <iostream>
#include <algorithm>
struct Person {
std::string name;
int age;
};
// 自定義比較函數
int comparePersons(const void *a, const void *b) {
const Person *personA = static_cast<const Person *>(a);
const Person *personB = static_cast<const Person *>(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
數組進行排序,并輸出排序后的結果。