template是C++里面的关键字
- 1-在哪用?
还是接着上次的swap函数入手:
一叉树:从C语言到C++zhuanlan.zhihu.com现在想交换的是两个int变量和两个double变量:
using namespace std;
int main(){
int a=10,b=-1;
double c=3.14,d=5.20;
swap1(a,b);
cout<<a<<"t"<<b<<endl;
swap2(c,d);
cout<<c<<" t"<<d<<endl;
return 0;
}
那就要变两个swap函数:
void swap1(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}
void swap2(double &a,double &b){
double temp;
temp=a;
a=b;
b=temp;
}
这两个函数除了参数类型不一样,其他都是一个模子刻出来的。
template就可以把这两个函数抽象出一个模板,要用哪个编译器就生成哪个
- 2-怎么用?
template <class类型参数1,class类型参数2...> 返回值类型 模板名(形参表){ 函数体 };
template <class T>
void Swap(T &a,T &b){
T temp;
temp=a;
a=b;
b=temp;
}
注意:Swap的S大写,因为可能有库函数重名引起错误;
完整代码+运行截图:
#include<iostream>
using namespace std;
template <class T>
void Swap(T &a,T &b){
T temp;
temp=a;
a=b;
b=temp;
}
int main(){
int a=10,b=-1;
double c=3.14,d=5.20;
Swap(a,b);
cout<<a<<"t"<<b<<endl;
Swap(c,d);
cout<<c<<" t"<<d<<endl;
return 0;
}