c++

c++ set如何进行自定义排序

小樊
83
2024-11-16 11:22:38
栏目: 编程语言

在C++中,要对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(5);
    my_set.insert(3);
    my_set.insert(1);
    my_set.insert(4);
    my_set.insert(2);

    // 输出集合中的元素
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

在这个示例中,我们定义了一个名为my_compare的比较函数,它接受两个整数参数并返回一个布尔值。然后,我们使用std::set的第二个模板参数(比较函数)来指定我们的自定义比较函数。最后,我们向集合中插入一些整数并输出它们。

如果您想要使用lambda表达式作为比较函数,可以这样做:

#include <iostream>
#include <set>

int main() {
    // 使用lambda表达式创建一个整数集合
    std::set<int, decltype([](int a, int b) { return a < b; })> my_set([](int a, int b) { return a < b; });

    // 向集合中插入元素
    my_set.insert(5);
    my_set.insert(3);
    my_set.insert(1);
    my_set.insert(4);
    my_set.insert(2);

    // 输出集合中的元素
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

在这个示例中,我们使用了lambda表达式 [](int a, int b) { return a < b; } 作为比较函数,并将其传递给std::set。其余代码与之前的示例相同。

0
看了该问题的人还看了