溫馨提示×

c++遍歷set怎樣實現自定義排序

c++
小樊
137
2024-11-23 04:52:09
欄目: 編程語言

在C++中,你可以使用std::set容器來存儲已經按照自定義排序規則排序的元素。要實現自定義排序,你需要提供一個比較函數或者重載<運算符。下面是兩種實現自定義排序的方法:

方法1:提供比較函數

#include <iostream>
#include <set>

// 自定義排序函數
bool customCompare(int a, int b) {
    return a < b; // 從小到大排序
}

int main() {
    std::set<int, decltype(&customCompare)> mySet(customCompare);

    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);
    mySet.insert(1);

    for (const auto& element : mySet) {
        std::cout << element << " ";
    }

    return 0;
}

方法2:重載<運算符

#include <iostream>
#include <set>

// 自定義排序類
struct CustomCompare {
    bool operator()(int a, int b) const {
        return a < b; // 從小到大排序
    }
};

int main() {
    std::set<int, CustomCompare> mySet;

    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);
    mySet.insert(1);

    for (const auto& element : mySet) {
        std::cout << element << " ";
    }

    return 0;
}

在這兩個示例中,我們都創建了一個包含整數的std::set,并使用自定義排序規則對元素進行排序。在第一個示例中,我們提供了一個比較函數customCompare,而在第二個示例中,我們定義了一個重載了<運算符的結構體CustomCompare。在這兩種情況下,輸出結果都是按照升序排列的元素:1 3 5 8。

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