c++ 不定参数,不定类型的 max,min 函数

MSVC\14.29.30133\include\utility(33,19): error C2064: 项不会计算为接受 2 个参数的函数
max min

#include <iostream>
#include <type_traits>

// 自定义 min_gd(支持任意类型和数量参数)
template <typename... Args>
auto min_gd(const Args&... args) {
    static_assert(sizeof...(args) > 0, "min_gd requires at least 1 argument");
    
    using CommonType = std::common_type_t<Args...>; // 推导公共类型
    CommonType min_val;
    bool is_first = true;
    
    // 用折叠表达式遍历所有参数
    ((is_first ? (min_val = args, is_first = false) : (args < min_val ? min_val = args : min_val)), ...);
    
    return min_val;
}

// 自定义 max_gd(支持任意类型和数量参数)
template <typename... Args>
auto max_gd(const Args&... args) {
    static_assert(sizeof...(args) > 0, "max_gd requires at least 1 argument");
    
    using CommonType = std::common_type_t<Args...>; // 推导公共类型
    CommonType max_val;
    bool is_first = true;
    
    // 用折叠表达式遍历所有参数
    ((is_first ? (max_val = args, is_first = false) : (args > max_val ? max_val = args : max_val)), ...);
    
    return max_val;
}

// 测试代码
int main() {
    // 测试不同类型混合
    std::cout << "min_gd(3, 1.5, 4.7): " << min_gd(3, 1.5, 4.7) << "\n";    // 输出 1.5
    std::cout << "max_gd(3, 1.5, 4.7): " << max_gd(3, 1.5, 4.7) << "\n\n";  // 输出 4.7


    return 0;
}

尽量少避免 自带的max 和min, 在许多库里面都是bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值