温馨提示×

c++遍历set怎样实现自定义排序

c++
小樊
81
2024-11-23 04:52:09
栏目: 编程语言

在C++中,你可以使用std::set容器来存储已经按照自定义排序规则排序的元素。要实现自定义排序,你需要提供一个比较函数或者重载<运算符。下面是两种实现自定义排序的方法:

方法1:提供比较函数

#include <iostream>
#include <set>

// 自定义排序函数
bool customCompare(int a, int b) {
    return a < b; // 从小到大排序
}

int main() {
    std::set<int, decltype(&customCompare)> mySet(customCompare);

    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);
    mySet.insert(1);

    for (const auto& element : mySet) {
        std::cout << element << " ";
    }

    return 0;
}

方法2:重载<运算符

#include <iostream>
#include <set>

// 自定义排序类
struct CustomCompare {
    bool operator()(int a, int b) const {
        return a < b; // 从小到大排序
    }
};

int main() {
    std::set<int, CustomCompare> mySet;

    mySet.insert(5);
    mySet.insert(3);
    mySet.insert(8);
    mySet.insert(1);

    for (const auto& element : mySet) {
        std::cout << element << " ";
    }

    return 0;
}

在这两个示例中,我们都创建了一个包含整数的std::set,并使用自定义排序规则对元素进行排序。在第一个示例中,我们提供了一个比较函数customCompare,而在第二个示例中,我们定义了一个重载了<运算符的结构体CustomCompare。在这两种情况下,输出结果都是按照升序排列的元素:1 3 5 8。

0