在C++中,要對std::set
進行自定義排序,您需要提供一個比較函數或比較對象(仿函數)。這個比較函數應該接受兩個參數,并返回一個表示它們順序的布爾值。以下是一個使用自定義比較函數的示例:
#include <iostream>
#include <set>
// 自定義比較函數
bool my_compare(int a, int b) {
return a < b;
}
int main() {
// 使用自定義比較函數創建一個整數集合
std::set<int, decltype(&my_compare)> my_set(my_compare);
// 向集合中插入元素
my_set.insert(5);
my_set.insert(3);
my_set.insert(1);
my_set.insert(4);
my_set.insert(2);
// 輸出集合中的元素
for (const auto& elem : my_set) {
std::cout << elem << " ";
}
return 0;
}
在這個示例中,我們定義了一個名為my_compare
的比較函數,它接受兩個整數參數并返回一個布爾值。然后,我們使用std::set
的第二個模板參數(比較函數)來指定我們的自定義比較函數。最后,我們向集合中插入一些整數并輸出它們。
如果您想要使用lambda表達式作為比較函數,可以這樣做:
#include <iostream>
#include <set>
int main() {
// 使用lambda表達式創建一個整數集合
std::set<int, decltype([](int a, int b) { return a < b; })> my_set([](int a, int b) { return a < b; });
// 向集合中插入元素
my_set.insert(5);
my_set.insert(3);
my_set.insert(1);
my_set.insert(4);
my_set.insert(2);
// 輸出集合中的元素
for (const auto& elem : my_set) {
std::cout << elem << " ";
}
return 0;
}
在這個示例中,我們使用了lambda表達式 [](int a, int b) { return a < b; }
作為比較函數,并將其傳遞給std::set
。其余代碼與之前的示例相同。