在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,以便根据自定义的排序规则对元素进行排序。