c++ set如何進(jìn)行自定義排序

c++
小樊
81
2024-11-16 11:22:38

在C++中,要對(duì)std::set進(jìn)行自定義排序,您需要提供一個(gè)比較函數(shù)或比較對(duì)象(仿函數(shù))。這個(gè)比較函數(shù)應(yīng)該接受兩個(gè)參數(shù),并返回一個(gè)表示它們順序的布爾值。以下是一個(gè)使用自定義比較函數(shù)的示例:

#include <iostream>
#include <set>

// 自定義比較函數(shù)
bool my_compare(int a, int b) {
    return a < b;
}

int main() {
    // 使用自定義比較函數(shù)創(chuàng)建一個(gè)整數(shù)集合
    std::set<int, decltype(&my_compare)> my_set(my_compare);

    // 向集合中插入元素
    my_set.insert(5);
    my_set.insert(3);
    my_set.insert(1);
    my_set.insert(4);
    my_set.insert(2);

    // 輸出集合中的元素
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)名為my_compare的比較函數(shù),它接受兩個(gè)整數(shù)參數(shù)并返回一個(gè)布爾值。然后,我們使用std::set的第二個(gè)模板參數(shù)(比較函數(shù))來(lái)指定我們的自定義比較函數(shù)。最后,我們向集合中插入一些整數(shù)并輸出它們。

如果您想要使用lambda表達(dá)式作為比較函數(shù),可以這樣做:

#include <iostream>
#include <set>

int main() {
    // 使用lambda表達(dá)式創(chuàng)建一個(gè)整數(shù)集合
    std::set<int, decltype([](int a, int b) { return a < b; })> my_set([](int a, int b) { return a < b; });

    // 向集合中插入元素
    my_set.insert(5);
    my_set.insert(3);
    my_set.insert(1);
    my_set.insert(4);
    my_set.insert(2);

    // 輸出集合中的元素
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

在這個(gè)示例中,我們使用了lambda表達(dá)式 [](int a, int b) { return a < b; } 作為比較函數(shù),并將其傳遞給std::set。其余代碼與之前的示例相同。

0