在 C++ 中,std::set
是一個關(guān)聯(lián)容器,它包含一組唯一的對象。std::set
通過比較函數(shù)(也稱為排序函數(shù))來確保元素按順序存儲。默認情況下,std::set
使用 <
運算符進行比較,但你可以通過提供自定義的比較函數(shù)來改變這種行為。
要自定義 std::set
的比較函數(shù),請遵循以下步驟:
operator()
成員函數(shù)。這個函數(shù)將用作比較函數(shù)。std::set
實例時,將自定義比較函數(shù)作為模板參數(shù)傳遞。下面是一個示例,展示了如何自定義 std::set
的比較函數(shù),以便按照元素的絕對值從大到小排序:
#include<iostream>
#include <set>
#include <cmath>
// 自定義比較函數(shù)
struct CustomCompare {
bool operator()(const int& a, const int& b) const {
return std::abs(a) > std::abs(b);
}
};
int main() {
// 使用自定義比較函數(shù)創(chuàng)建 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;
}
輸出結(jié)果將會是:
-8 -5 3 1
這表明 std::set
中的元素按照它們絕對值的降序排列。