C++中如何自定义set集合的比较函数

1949idc 2年前 (2024-09-18) 阅读数 315 #编程语言

在 C++ 中,std::set 是一个关联容器,它包含一组唯一的对象。std::set 通过比较函数(也称为排序函数)来确保元素按顺序存储。默认情况下,std::set 使用 < 运算符进行比较,但你可以通过提供自定义的比较函数来改变这种行为。

要自定义 std::set 的比较函数,请遵循以下步骤:

  1. 定义一个结构体或类,该结构体或类包含一个重载的 operator() 成员函数。这个函数将用作比较函数。
  2. 在创建 std::set 实例时,将自定义比较函数作为模板参数传递。

下面是一个示例,展示了如何自定义 std::set 的比较函数,以便按照元素的绝对值从大到小排序:

#include<iostream>
#include <set>
#include <cmath>

// 自定义比较函数
struct CustomCompare {
    bool operator()(const int& a, const int& b) const {
        return std::abs(a) > std::abs(b);
    }
};

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

    // 向 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;
}

输出结果将会是:

-8 -5 3 1

这表明 std::set 中的元素按照它们绝对值的降序排列。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业