zoukankan      html  css  js  c++  java
  • C++函数模版

    如果对于两种不同类型的数值进行比较,可能会写出以下的代码:

    int compare(const string &v1, const string &v2) {
        if (v1 < v2) {
            return -1;
        }
        if (v2 < v1) {
            return 1;
        }
        return 0;
    }
    int compare(const double &v1, const double &v2) {
        if (v1 < v2) {
            return -1;
        }
        if (v1 > v2) {
            return 1;
        }
        return 0;
    }

    这两个函数除对数值比较类弄不一样外,函数体是一样的,而且重写麻烦。

    这时候就需要模版了

    template <typename T>
    int compare(const T &v1, const T &v2) {
        if (v1 < v2) {
            return -1;
        }
        if (v1 > v2) {
            return 1;
        }
        return 0;
    }

    用一个函数体即可完成,这个就是所谓的通用函数模板。

    1、定义

      模版定义以关键字template开始,后跟模板参数列表(template), 这个列表是一个逗号分隔的一个或多个模版参数的列表,用小于号<和大于号>包起来。

    2、实例化

      模版定义好后,调用会实例化

    cout << compare(1, 2) << endl;
    // compare(const int &v1, const int &v2)

     由于编译器遇到一个模版定义时,它并不生成代码。只有实例化出模版时一个特定的版本时,编译器才会生成代码。这一特性影响我们如何组织代码及错误何时被检测到。

  • 相关阅读:
    C++中pair的用法
    DFS例题:力扣200:岛屿数量
    DFS例题:力扣695:岛屿的最大面积
    DFS深度优先遍历
    java AQS源码分析
    spring实现事务原理
    java常见并发面试题目+示例代码
    java并发锁
    ThreadPoolExecutor
    线程通信
  • 原文地址:https://www.cnblogs.com/zhuangzebo/p/4200122.html
Copyright © 2011-2022 走看看