温馨提示×

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

c++
小樊
81
2024-11-30 18:58:51
栏目: 编程语言

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

0