在 C++ 中,std::set
是一个关联容器,它包含一组唯一的对象。默认情况下,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(3);
my_set.insert(1);
my_set.insert(4);
my_set.insert(2);
for (int x : my_set) {
std::cout<< x << ' ';
}
return 0;
}
你可以定义一个类,该类包含一个名为 operator()
的成员函数,用于比较两个元素。例如:
#include <iostream>
#include <set>
class MyCompare {
public:
bool operator()(int a, int b) const {
return a < b;
}
};
int main() {
std::set<int, MyCompare> my_set(MyCompare());
my_set.insert(3);
my_set.insert(1);
my_set.insert(4);
my_set.insert(2);
for (int x : my_set) {
std::cout<< x << ' ';
}
return 0;
}
在这两个示例中,我们都定义了一个自定义的排序规则,使得 std::set
使用这个规则对元素进行排序。你可以根据需要修改比较函数或比较类的实现,以实现你想要的排序规则。