【问题标题】:Am I off to a good start in my template function? [closed]我的模板功能是否有一个良好的开端? [关闭]
【发布时间】:2023-04-03 11:25:02
【问题描述】:

所以我被要求创建一个具有名称的模板函数,它必须接受两个 T 对象,然后我必须将参数定义为对这些 T 对象的常量引用,并且它必须返回较小的二。我想看看我是否有一个正确的开始,因为这是我第一次使用模板。

template<class T1, class T2>
T1 minimum(const T1, int size)
{

【问题讨论】:

    标签: c++


    【解决方案1】:
    template <class T1, class T2>
    T1 minimum(const T1, int size)
    

    这是一个模板化函数,它接受两个参数:第一个是T1 类型,第二个始终是int。这个函数将返回一个T1。模板参数T2 未使用,可能会导致模板推理出现问题。至少,为了有用,这个函数应该写成

    template <class T>
    T minimum(T arg, int size)
    

    但是,您的提示要求 两个 T 参考参数。它没有说要接受int。所以,相反,我可能会推荐类似的东西

    template <class T>
    T minimum(const T& arg1, const T& arg2)
    

    现在你有两个参数。看看能不能弄清楚函数体怎么写。

    【讨论】:

      【解决方案2】:

      SO 上的人们喜欢家庭作业问题,所以,我们很乐意提供帮助。

      阅读需求然后设计实现总是一个很好的起点。

      来自

      创建一个具有名称的模板函数,它必须接受两个 T 对象,然后我必须将参数定义为对这些 T 对象的常量引用,并且它必须返回两者中较小的一个。

      我们可以分成几部分:

      1. 模板 --> 好的,我们需要定义一个模板
      2. function --> 我们需要创建一个template function
      3. 两个 T 对象 --> 函数需要有 2 个参数,不知何故为 T 类型
      4. 对 T 的常量引用 --> 我们需要为参数写类似“const T&”的东西
      5. 必须返回两者中较小的一个。 --> 我们需要找到,如果一个元素比另一个小,则返回最小的

      从 1 开始:

      template &lt;class T&gt;

      从 2 开始:

      template <class T>
      something function(something)
      

      从 3 开始:

      template <class T>
      something function(T parameter1, T parameter2)
      

      从 4 开始:

      template <class T>
      something function(const T& parameter1, const T& parameter2)
      

      从 5 开始:

      template <class T>
      T function(const T& parameter1, const T& parameter2) {
          T smallerOfTheTwo;
          if (parameter1 < parameter2)
              smallerOfTheTwo = parameter1;
          if (parameter2 < parameter1)
              smallerOfTheTwo = parameter2;
          if (parameter2 == parameter1)
              smallerOfTheTwo = parameter1;
          return smallerOfTheTwo;
      }
      

      如果两个输入值相等,我们应该做什么没有规范。我们假设,我们可以返回其中任何一个。

      【讨论】:

        猜你喜欢
        • 2016-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多