溫馨提示×

C++中如何自定義set集合的比較函數

c++
小樊
174
2024-09-13 02:36:18
欄目: 編程語言

在 C++ 中,std::set 是一個關聯容器,它包含一組唯一的對象。std::set 通過比較函數(也稱為排序函數)來確保元素按順序存儲。默認情況下,std::set 使用 < 運算符進行比較,但你可以通過提供自定義的比較函數來改變這種行為。

要自定義 std::set 的比較函數,請遵循以下步驟:

  1. 定義一個結構體或類,該結構體或類包含一個重載的 operator() 成員函數。這個函數將用作比較函數。
  2. 在創建 std::set 實例時,將自定義比較函數作為模板參數傳遞。

下面是一個示例,展示了如何自定義 std::set 的比較函數,以便按照元素的絕對值從大到小排序:

#include<iostream>
#include <set>
#include <cmath>

// 自定義比較函數
struct CustomCompare {
    bool operator()(const int& a, const int& b) const {
        return std::abs(a) > std::abs(b);
    }
};

int main() {
    // 使用自定義比較函數創建 set
    std::set<int, CustomCompare> my_set;

    // 向 set 添加元素
    my_set.insert(-5);
    my_set.insert(3);
    my_set.insert(-8);
    my_set.insert(1);

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

    return 0;
}

輸出結果將會是:

-8 -5 3 1

這表明 std::set 中的元素按照它們絕對值的降序排列。

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