在 C++ 中,要自定義 set
容器的比較規則,需要創建一個自定義的比較類或者結構體,并重載 operator()
函數。然后將這個自定義比較類作為模板參數傳遞給 std::set
。
以下是一個示例,展示了如何自定義 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;
}
在這個示例中,我們創建了一個名為 CustomCompare
的自定義比較類,并重載了 operator()
函數。在這個函數中,我們定義了按照降序排列的比較規則。然后我們使用這個自定義比較類作為 std::set
的第三個模板參數,從而實現了自定義比較規則。
運行這段代碼,你會看到輸出的元素是按照降序排列的:5 4 3 1
。