qsort
是 C++ 標準庫中的一個通用排序函數,它要求你提供一個比較函數,以便確定元素之間的順序。對于自定義數據類型,你需要定義一個比較函數,并將其作為參數傳遞給 qsort
。
以下是一個使用自定義數據類型的示例,該數據類型是一個結構體,包含兩個整數成員:
#include <iostream>
#include <algorithm>
// 自定義數據類型
struct MyIntPair {
int first;
int second;
};
// 比較函數
int compareMyIntPairs(const void* a, const void* b) {
MyIntPair* pairA = static_cast<MyIntPair*>(a);
MyIntPair* pairB = static_cast<MyIntPair*>(b);
if (pairA->first < pairB->first) {
return -1;
} else if (pairA->first > pairB->first) {
return 1;
} else {
return pairA->second - pairB->second;
}
}
int main() {
// 創建一個 MyIntPair 類型的數組
MyIntPair myArray[] = {{3, 4}, {1, 2}, {2, 1}};
// 獲取數組長度
int arraySize = sizeof(myArray) / sizeof(myArray[0]);
// 使用 qsort 對數組進行排序
qsort(myArray, arraySize, sizeof(MyIntPair), compareMyIntPairs);
// 輸出排序后的數組
for (int i = 0; i < arraySize; ++i) {
std::cout << "First: " << myArray[i].first << ", Second: " << myArray[i].second << std::endl;
}
return 0;
}
在這個示例中,我們定義了一個名為 MyIntPair
的結構體,用于存儲一對整數。我們還定義了一個名為 compareMyIntPairs
的比較函數,該函數根據 MyIntPair
結構體的 first
和 second
成員對元素進行排序。
在 main
函數中,我們創建了一個 MyIntPair
類型的數組,并使用 qsort
對其進行排序。我們將比較函數 compareMyIntPairs
作為參數傳遞給 qsort
,以便根據自定義邏輯對數組進行排序。最后,我們輸出排序后的數組。