阅读量:2
在 C++ 中,std::set 是一个关联容器,它包含一组唯一的对象。默认情况下,std::set 使用 < 运算符对元素进行排序。如果你想要自定义排序规则,可以通过提供一个比较函数或比较类来实现。
以下是两种自定义排序规则的方法:
方法一:使用比较函数
你可以定义一个函数,该函数接受两个参数并返回一个整数,表示它们之间的顺序关系。例如:
#include
#include
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
#include
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 使用这个规则对元素进行排序。你可以根据需要修改比较函数或比较类的实现,以实现你想要的排序规则。
以上就是关于“C++ set排序规则如何自定义”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm