c++

C++ set排序规则如何自定义

小樊
81
2024-11-30 19:02:51
栏目: 编程语言

在 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 使用这个规则对元素进行排序。你可以根据需要修改比较函数或比较类的实现,以实现你想要的排序规则。

0
看了该问题的人还看了