在C++中,set
是一個關聯容器,它包含一組唯一的對象
默認排序規則:如果在創建 set
時沒有提供自定義比較函數,那么元素將按照升序排列。對于基本數據類型(如 int
、float
、double
等),排序規則是直接比較它們的值。對于復雜數據類型(如自定義結構體或類),需要重載 <
運算符以定義排序規則。
自定義排序規則:你可以在創建 set
時提供一個自定義比較函數,用于指定元素的排序規則。自定義比較函數應該返回一個布爾值,表示兩個元素之間的排序關系。例如,如果你想按照降序排列元素,可以提供一個比較函數,使得當一個元素大于另一個元素時返回 true
。
下面是一個使用自定義排序規則的 set
示例:
#include<iostream>
#include <set>
// 自定義比較函數,按照降序排列
struct CustomCompare {
bool operator()(const int& a, const int& b) const {
return a > b;
}
};
int main() {
// 使用自定義比較函數創建 set
std::set<int, CustomCompare> my_set;
// 向 set 中添加元素
my_set.insert(3);
my_set.insert(1);
my_set.insert(4);
my_set.insert(1);
my_set.insert(5);
// 輸出 set 中的元素
for (const auto& elem : my_set) {
std::cout<< elem << " ";
}
return 0;
}
輸出結果:
5 4 3 1
這個示例中,我們使用了一個自定義比較函數 CustomCompare
,按照降序排列 set
中的元素。