c++

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

小樊
82
2024-11-30 12:22:38
栏目: 编程语言

在C++中,你可以通过创建一个自定义的比较函数或比较类来定义std::set的排序规则

方法1:使用比较函数

#include <iostream>
#include <set>
#include <vector>

// 自定义比较函数
bool my_compare(int a, int b) {
    return a < b;
}

int main() {
    // 使用自定义比较函数创建set
    std::set<int, decltype(&my_compare)> my_set(my_compare);

    // 向set中添加元素
    my_set.insert(5);
    my_set.insert(3);
    my_set.insert(8);
    my_set.insert(1);

    // 输出set中的元素(按自定义排序规则)
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

方法2:使用比较类

#include <iostream>
#include <set>
#include <vector>

// 自定义比较类
struct MyCompare {
    bool operator()(int a, int b) const {
        return a < b;
    }
};

int main() {
    // 使用自定义比较类创建set
    std::set<int, MyCompare> my_set(MyCompare());

    // 向set中添加元素
    my_set.insert(5);
    my_set.insert(3);
    my_set.insert(8);
    my_set.insert(1);

    // 输出set中的元素(按自定义排序规则)
    for (const auto& elem : my_set) {
        std::cout << elem << " ";
    }

    return 0;
}

在这两个示例中,我们都定义了一个自定义排序规则,使得std::set中的元素按升序排列。你可以根据需要修改比较函数或比较类,以实现不同的排序规则。

0
看了该问题的人还看了