中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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

c++
小樊
81
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
乐陵市| 南投市| 洛南县| 呼伦贝尔市| 左云县| 阳山县| 大田县| 南投市| 天全县| 通州市| 天峨县| 册亨县| 河津市| 铜山县| 新密市| 百色市| 龙川县| 靖安县| 青川县| 黄龙县| 曲松县| 开阳县| 平舆县| 东丰县| 中山市| 丹寨县| 开化县| 宁波市| 洛南县| 浙江省| 得荣县| 沭阳县| 三台县| 中西区| 鱼台县| 阿克| 溧水县| 眉山市| 景谷| 胶南市| 兴山县|