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

  • 相关阅读:
    第十三周助教小结
    记事本
    第十二周助教小结
    与周老师会谈之后的感想
    第十一周总结
    第十周助教总结
    听周筠老师一席话,受益匪浅
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业01
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/7116841.html
Copyright © 2011-2022 走看看