template模板的用法
1. 函数模板
想象实现一个比较大小的函数, 如果想要比较long, doube等类型,是否就需要写很多种函数(而且只是参数类型不同而已)?
int cmp(int a, int b) { return a>b; }
- 像STL中的stack等就用到了模板,在初始化的时候,stack S; 实际就是声明模板中typename为int
所以出现下面的写法:
template<class T>
int cmp(T a, T b) {
return a>b;
}
int main() {
cmp<char>('a', 'z');
cmp<double>(12.8, 12.7);
cmp(1,5); // 这种不加类型名的写法也是正确的
return 0;
}
2. 类模板
- 基本同理,可以参考STL中stack等实现的源码