溫馨提示×

c++ qsort如何處理自定義數據類型

c++
小樊
88
2024-11-25 06:13:34
欄目: 編程語言

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 結構體的 firstsecond 成員對元素進行排序。

main 函數中,我們創建了一個 MyIntPair 類型的數組,并使用 qsort 對其進行排序。我們將比較函數 compareMyIntPairs 作為參數傳遞給 qsort,以便根據自定義邏輯對數組進行排序。最后,我們輸出排序后的數組。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女