You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次编写最小值模板函数:起步代码是否符合要求的技术问询

你的初始代码和需求不匹配,我来帮你修正并解释清楚

首先,咱们对照你的需求拆解下当前代码的问题:

  • 你需要接收两个同类型T的对象,但你定义了两个模板参数T1和T2,这会让函数默认支持不同类型的参数,不符合你的要求;
  • 参数列表里写了const T1(没加引用)和多余的int size,既没满足“常量引用”的要求,还多了无关参数;
  • 返回值用T1也不合适,既然两个参数都是同类型T,返回值也应该和参数类型一致。

下面是完全符合你需求的模板函数写法:

template <typename T>
T minimum(const T& a, const T& b) {
    // 用三元运算符简洁返回较小值,也可以换成if-else写法
    return (a < b) ? a : b;
}

我给你拆解下每部分的作用:

  • template <typename T>:这里用typename(和class效果完全一致,只是typename更清晰表示这是一个类型)定义了单个模板参数T,确保两个参数都是同一类型;
  • const T& a, const T& b:const保证我们不会修改传入的对象,&表示引用传递,避免对大对象做不必要的拷贝,完美匹配你“对应T类型对象的常量引用”的要求;
  • 返回值T:返回的是两个T类型对象中的较小值,类型和参数保持一致;
  • 函数体的三元运算符是简化写法,如果你觉得不直观,也可以写成:
    if (a < b) {
        return a;
    } else {
        return b;
    }
    

最后给你提个小提醒:这个模板函数要求T类型必须支持<运算符哦。如果是你自己定义的类,需要重载operator<才能正常使用这个函数。

内容的提问来源于stack exchange,提问作者Tristie White

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:48:04