Template
一.函数模板:
个人理解就是把整体代码结构逻辑相同,只有参数类型不同的函数用同一个函数去编写,在这个函数当中不去指定参数的类型,而是使用暂时替代的办法,当需要使用该函数时再定义函数中参数的类型
例如
模板如下
templatevoid swap(T& t1, T& t2) { T tmpT; tmpT = t1; t1 = t2; t2 = tmpT; }
其中T就是我们所用来暂时替代类型的一个自定义名称,当我们需要使用它时,我们再去指定T是什么,例如:
- T为int
int a = 1, b = 2; swap(a, b);
- T为double
double a = 1, b = 2; swap(a, b);
二. 类模板
类模板的简单用法其实和函数模板也很类似,就是在类中都可以去指定T代替某个参数的类型,提高代码的复用率
例如:
templateclass A { public: A(); ~A(); void push(T t); T pop(); private: T *value; int size; int sign; }; template A ::A(){ size = 100; sign = 0; value = new T[size]; } template A ::~A() { delete [] value ; } template void A ::push(T t){ if (sign < size) { sign ++; } value[sign - 1] = t; } template T A ::pop(){ T t = value[sign - 1]; sign--; return t; }
使用时:
// int类型
A a;
a.push(1);
a.push(2);
a.push(3);
//double类型
A(double) a;
a.push(1.0);
a.push(2.0);
a.push(3.0);



