zoukankan      html  css  js  c++  java
  • c++之模板函数-模板

    模板就是建立通用的模具,大大提高复用性。

    c++的另一种编程思想是泛型编程,主要利用的就是模板。

    c++提供两种模板机制:函数模板和类模板。

    声明:template<class T>//typename可以替换成class

    函数模板

    函数模板的作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。

    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    
    void swapInt(int& a,int& b) {
        int tmp = a;
        a = b;
        b = tmp;
    }
    void swapFloat(float& a, float& b) {
        float tmp = a;
        a = b;
        b = tmp;
    }
    int main() {
        int a = 1;
        int b = 2;
        swapInt(a, b);
        cout << "a=" << a << "	" << "b=" << b << endl;
        float c = 1.1f;
        float d = 2.2f;
        swapFloat(c, d);
        cout << "c=" << c << "	" << "d=" << d << endl;
        system("pause");
        return 0;
    }

    假设我们要设置所有数据类型的交换函数,那么如果按照普通的方式来写,就要写很多的函数,利用泛型就可以进行简化。

    #include<iostream>
    #include<fstream>
    #include<string>
    using namespace std;
    
    //模板函数
    //声明一个模板,表明T是一个通用数据类型
    template<typename T>
    void mySwap(T& a,T& b) {
        T tmp = a;
        a = b;
        b = tmp;
    }
    
    int main() {
        int a = 1;
        int b = 2;
        //使用模板函数有两种方式
        //1.自动类型推导
        mySwap(a, b);
        cout << "a=" << a << "	" << "b=" << b << endl;
        //2.显示指定类型
        mySwap<int>(a, b);
        cout << "a=" << a << "	" << "b=" << b << endl;
        float c = 1.1f;
        float d = 2.2f;
        mySwap(c, d);
        cout << "c=" << c << "	" << "d=" << d << endl;
        system("pause");
        return 0;
    }

    输出:

    模板注意事项:

    • 自动类型推导必须推导出一致的数据类型T才可以使用;
    • 模板必须要确定出T的数据类型; 
  • 相关阅读:
    使用JS实现网页动态换肤
    数据库更新Sql脚本总结
    Javascript无刷新获取当前时间
    ASP.NET将网页设为桌面图标实现
    解决在IE浏览器中resize事件执行多次
    linux编译安装gcc5.3.0
    JAVA抽象类和接口
    JAVA内部类
    推测竞赛中测试集的正负比例
    Codeforces Round #742 (Div. 2) 题解
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12103389.html
Copyright © 2011-2022 走看看