zoukankan      html  css  js  c++  java
  • C++语言基础(20)-模板的非类型参数

    一.在函数模板中使用非类型参数

    #include <iostream>
    using namespace std;
    
    template<class T> void Swap(T &a, T &b);  //模板①:交换基本类型的值
    template<typename T, unsigned N> void Swap(T (&a)[N], T (&b)[N]);  //模板②:交换两个数组
    
    template<typename T, unsigned N> void printArray(T (&arr)[N]);  //打印数组元素
    
    int main(){
        //交换基本类型的值
        int m = 10, n = 99;
        Swap(m, n);  //匹配模板①
        cout<<m<<", "<<n<<endl;
    
        //交换两个数组
        int a[5] = { 1, 2, 3, 4, 5 };
        int b[5] = { 10, 20, 30, 40, 50 };
        Swap(a, b);  //匹配模板②
        printArray(a);
        printArray(b);
    
        return 0;
    }
    
    template<class T> void Swap(T &a, T &b){
        T temp = a;
        a = b;
        b = temp;
    }
    
    template<typename T, unsigned N> void Swap(T (&a)[N], T (&b)[N]){
        T temp;
        for(int i=0; i<N; i++){
            temp = a[i];
            a[i] = b[i];
            b[i] = temp;
        }
    }
    
    template<typename T, unsigned N> void printArray(T (&arr)[N]){
        for(int i=0; i<N; i++){
            if(i == N-1){
                cout<<arr[i]<<endl;
            }else{
                cout<<arr[i]<<", ";
            }
        }
    }

    运行结果:

    99, 10
    10, 20, 30, 40, 50
    1, 2, 3, 4, 5

  • 相关阅读:
    画图软件
    万用表
    传导发射
    MOT
    Docker
    第十二章、私营部门和第三部门中的采购
    第十一章、公共部门中的采购
    第十章、部门与行业环境
    第九章、信息与通信技术系统
    第八章、组织的采购职能
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/7116841.html
Copyright © 2011-2022 走看看