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

#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 = , n = ;
Swap(m, n); //匹配模板①
cout<<m<<", "<<n<<endl; //交换两个数组
int a[] = { , , , , };
int b[] = { , , , , };
Swap(a, b); //匹配模板②
printArray(a);
printArray(b); return ;
} 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=; 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=; i<N; i++){
if(i == N-){
cout<<arr[i]<<endl;
}else{
cout<<arr[i]<<", ";
}
}
}

运行结果:

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

C++语言基础(20)-模板的非类型参数的更多相关文章

  1. C++语言基础(18)-模板

    Java中的泛型编程可以极大的提升编程的效率,比如在android中查找一个控件的ID:标准写法为: TextView tv_text = (TextView)findViewById(R.id.tv ...

  2. C++语言基础(19)-模板的显式具体化

    应用背景: 例如有下面的函数模板,它用来获取两个变量中较大的一个: template<class T> const T& Max(const T& a, const T&a ...

  3. C语言基础(20)-文件操作(fopen,getc,fclose)

    一.文件操作 读文件的顺序: 1.先打开文件 2.读写文件 3.关闭文件 1.1 fopen FILE *fopen( const char *path, const char *mode ); 函数 ...

  4. Java入门 - 语言基础 - 20.Stream和File和IO

    原文地址:http://www.work100.net/training/java-stream-file-io.html 更多教程:光束云 - 免费课程 Stream和File和IO 序号 文内章节 ...

  5. GO学习-(20) Go语言基础之单元测试

    Go语言基础之单元测试 不写测试的开发不是好程序员.我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分. 这篇文章主要介绍下在Go ...

  6. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  7. 关于c++模板非类型参数中指针和引用类型必须为全局或者静态变量的问题

    之前在学习c++模板的时候,一直没留意到在非类型参数中对指针和引用有着一些限制,今早在复学模板的时候才注意到书上标明,指针和引用作为模板的非类型参数传递时必须要求是全局或者静态变量.其实不难想到,模板 ...

  8. django框架基础-django模板语言-长期维护

    ##################     常用的模板语言       ####################### # django的模板语言, # # 只需要记两种特殊符号: # # {{ } ...

  9. [.net 面向对象编程基础] (20) LINQ使用

    [.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...

随机推荐

  1. OE_ORDER_PUB.PROCESS_ORDER to Apply hold on a sales order

    PURPOSE: This post is to provide a sample script to Apply hold on a sales order using an API OE_ORDE ...

  2. 17、percona-toolkit

    pt-ioprofile工具:1.percona-toolkit(在http://www.percona.com下载)2.安装该工具依赖的perl组件yum install perl-IO-Socke ...

  3. python升级导致yum命令无法使用的解决办法?

    yum是依赖特定的python版本的,不同的linux系统需要的python版本不同. 查看yum的启动脚本:which is yum 头一行指定使用的python版本,这个必须是系统需要的,而不要使 ...

  4. codeforces#277.5 C. Given Length and Sum of Digits

    C. Given Length and Sum of Digits... time limit per test 1 second memory limit per test 256 megabyte ...

  5. [转]SSIS cannot convert between unicode and non-unicode string

    本文转自:http://www.mssqltips.com/sqlservertip/1393/import-excel-unicode-data-with-sql-server-integratio ...

  6. AMBA AHB总线

    Advanced Microcontroller Bus Architecture, 即AMBA,是ARM公司提出的总线规范,被很多SoC设计所采用,常用的实现有AHB(Advanced High-P ...

  7. decal in unity

    // Upgrade NOTE: commented out 'float4x4 _CameraToWorld', a built-in variable// Upgrade NOTE: replac ...

  8. Maven Web项目配置Mybatis

    一.添加Mybatis和数据库相关的包 1 pom.xml中添加的包有mybatis,mybatis-spring,druid,MySQL-connector-Java,commons-io,refl ...

  9. Spark Streaming no receivers彻底思考

    数据接入Spark Streaming的二种方式:Receiver和no receivers方式 建议企业级采用no receivers方式开发Spark Streaming应用程序,好处: 1.更优 ...

  10. 开发 nodejs REST 个人感想

    本来想拿 nodejs 做个 ip 查询小应用的,做的时候想着把基础弄好再做应用,没想到做着做着就变成 spring 了 可能太多数人觉得不知道怎么用,以后我会写详细点使用教程 个人感觉自己做出来的东 ...