标签:
1、定义: 实现代码重用机制的一种工具, 实现类型参数化, 即把类型定义为参数, 实现真正的代码可重用性。 分为两类:函数模板, 类模板。
2、函数模板:
template <class/typename T>
返回类型 函数名 (形参表) {
//函数定义体
}
3、类模板:
template <class/typename T>
class 类名 {
//类定义
};
4、非类型模板参数
非类型模板参数可以是常整数(包括枚举)或者指向外部链接对象的指针。
5、模板的特化
(1)、模板的特化:打算给模板函数(类)的某个特定类型写一个函数。代替编译器完成了对指定类型的特化工作。
template <> //代表一个模板函数
int min<int> (int a, int b) {
return a < b ? a : b;
}
(2)、偏特化:只针对模板类型中部分类型进行特化。
6、仿函数:
(1)、重载了()操作符的对象。
注:仿函数不是函数, 是个类; 仿函数重载了()操作符。
struct DoSomething {
void operator() (int i) {
}
}
typedef void(*DoSomethingPtr)(int);
for_each, 它的源代码大致如下:
template< typename Iterator, typename Functor >
void for_each( Iterator begin, Iterator end, Fucntor func ) {
for( ; begin!=end; begin++ )
func( *begin );
}
这个 for 循环遍历了容器中的每一个元素,对每个元素调用了仿函数 func,这样就实现了 对“每个元素做同样的事”这样一种编程的思想。
标签:
原文地址:http://www.cnblogs.com/wmsir/p/4853811.html