在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
。其余代码与之前的示例相同。