• 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

  • 相关阅读:
    ie条件注释
    css3之图片一闪而过特效
    css帧动画之图片发亮
    css3动画
    解决ie6不兼容透明图片
    jquery实现拖拽的效果
    原生js实现拖拽弹框的效果
    C++学习笔记十之连接数据库
    C++学习笔记九之异常处理
    C++学习笔记八之STL内置算法
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/7116841.html
Copyright © 2020-2023  润新知