模板初学者指南1
原文:http://www.codeproject.com/cpp/templates_part1.asp
在开发大型应用时,对于不同的函数和类,通过使用共享代码模板可以节省大量的时间。在通用的函数或是类中定义模板,模板是和数据相独立的。在这个指南中,我将处理模板函数和模板类。假设你已经实现了一个类处理堆栈,有关push pop 读状态等操作,这个堆栈类可以处理double类型的数值。如果以后要求一个整型的堆栈类,哪怎么办?没有模板技术,你不得不复制粘贴这个堆栈类代码。这样效率不高。使用模板,你可以定义模板类或是函数,使用所有的函数和类型, 可以在模板定义中声明新的变量。看下面是怎么工作的:
函数模板
假设我们需要一个函数模板为了在不同类型的数组中查找最小数值:
template < class elemtype >
elemtype calcmin(elemtype elemfield[], int ifieldsize)
{
int imin = 0;
for (int i=1; i < ifieldsize; ++i)
{
if (elemfield[i] < elemfield[imin])
imin = i;
}
return elemfield[imin];
}
这就是函数模板。他期待一个数据类型并将返回其中其中的一个。使用这个模板,看下面的例子:
void letstestthefunctiontemplate()