在C++中,std::set
是一个关联容器,它会根据元素的大小自动排序。如果你想要自定义排序规则,你可以使用比较函数或者比较对象(仿函数)。下面是两种方法的示例:
方法1:使用比较函数
#include <iostream>
#include <set>
#include <functional>
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(4);
my_set.insert(1);
my_set.insert(2);
for (int num : my_set) {
std::cout << num << " ";
}
return 0;
}
方法2:使用比较对象(仿函数)
#include <iostream>
#include <set>
struct MyCompare {
bool operator()(int a, int b) const {
return a < b;
}
};
int main() {
std::set<int, MyCompare> my_set(MyCompare());
my_set.insert(5);
my_set.insert(3);
my_set.insert(4);
my_set.insert(1);
my_set.insert(2);
for (int num : my_set) {
std::cout << num << " ";
}
return 0;
}
在这两个示例中,我们定义了一个自定义的比较函数my_compare
(方法1)和一个比较对象MyCompare
(方法2),它们都实现了operator()
函数,用于比较两个整数。然后,我们将这个比较函数或比较对象作为模板参数传递给std::set
,以便根据自定义的排序规则对元素进行排序。