c++泛型编程
一、简介
1.概念:编写不依赖具体数据类型的程序;
2.目的:将程序尽可能通用,将算法从数据中抽象出来,成为通用算法;
3.应用:①c++ 中模板为泛型程序设计提供了基础;②STL(标准模板库)是泛型程序设计的例子;
二、模板
1.概念:模板是一种用不确定类型参数来产生一系列函数和类的机制。通过模板我们可以产生类和函数的集合,使他们操作不同的数据类型,从而避免为每一种数据类型单独产生一个函数和类。
2.分类:函数模板、类模板
3.函数模板、类模板
4.工作方式:
①函数模板实例化->模板函数;
②类模板->实例化->模板类->对象;
三、函数模板
1.定义:函数模板使用和普通函数一样,但它的类型可以通过参数来传递,在函数定义时可以不指明具体的数据类型;当发送函数调用时,编译器可根据传入的实参自动推断数据类型。
2.语法
template 函数模板定义关键字
<模板参数表> 用来定义函数参数的类型,参数类型有一个或多个,用逗号隔开,不能为空;
模板参数表中,class\typename 没有任何区别,都是类型表示符号,可以随意替换。
template <<模板参数表>>
<返回值类型> < 函数名>(<参数表>)
{
<函数表>
}
template <typename T>
void Swap(T& a,T& b)
{
T tmp=a;
a=b;
b=tmp;
}