C++ std::set如何實(shí)現(xiàn)自定義排序

c++
小樊
197
2024-06-13 16:07:44

要在std::set中實(shí)現(xiàn)自定義排序,可以使用自定義的比較函數(shù)或仿函數(shù)來(lái)定義元素的排序規(guī)則。以下是一個(gè)示例代碼,演示了如何使用自定義比較函數(shù)來(lái)對(duì)set中的元素進(jìn)行排序:

#include <iostream>
#include <set>

// 自定義比較函數(shù),按照元素的絕對(duì)值大小進(jìn)行排序
struct Compare {
    bool operator()(const int& a, const int& b) const {
        return std::abs(a) < std::abs(b);
    }
};

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

    mySet.insert(5);
    mySet.insert(-3);
    mySet.insert(2);
    mySet.insert(-1);

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

    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)自定義的比較函數(shù)Compare,它按照元素的絕對(duì)值大小進(jìn)行排序。然后在聲明set對(duì)象時(shí),指定了自定義的比較函數(shù)Compare作為第二個(gè)模板參數(shù)。這樣就可以在set中使用自定義的比較函數(shù)來(lái)對(duì)元素進(jìn)行排序。

0