泛型编程和STL技术

1、模板

1.1模板的概念

模板就是建立通用的模具,大大提高复用性

模板不能直接使用,只是一个框架,也不是万能的

 

1.2函数模板

函数模板作用:

建立通用函数,其函数返回类型和形参类型可以不具体指定,用虚拟的类型来代表

语法:

template     <typename T>  

函数声明或定义

解释:

template---声明创建模板

typename---表明其后面的符号是一个数据类型,可用class代替

T---通用的数据类型,可用其他字符替换

案例:

template     <typename T> 

void mySwap(T &a,T &b)

{

  T temp=a;

  a=b;

  b=temp;

}

void test( )

{

       int a=10,b=10;

  mySwap(a,b);//1、自动类型推导

  mySwap<int>(a,b);//   2、显示指定类型

}

1.3.1类模板语法

1.3.2类模板与函数模板的区别

1.类模板没有自动类型推导方式

void test01()

{

//Person p("孙悟空",200);无法用自动类型推导

Person<string,int>p("孙悟空",200);

}

2.类模板在模板参数可以有默认参数

 

1.3.3类模板中的成员函数创建时间

类模板中的成员函数和普通类的成员函数创建时机不同:

1.普通类的成员函数一开始就创建

2.类模板的成员函数在调用创建