1、模板,第十章,2,回顾,虚函数 纯虚函数 抽象类 动态绑定 虚析构函数,3,目标,函数模板 类模板 标准模板库(STL),4,模板的概念,C+中的模板提供了重用源代码的方法 两种类型的模板 类模板 函数模板,5,如果没有函数模板,通过函数重载实现不用类型的操作int max(int a, int b)return a b ? a : b;float max(float a, float b)return a b ? a : b;,6,函数模板 4-1,对各种数据类型,执行完全相同的操作根据函数调用中提供的参数,编译器自动实例化不同的对象代码函数,7,函数模板 4-2,#include temp
2、late T max(T a, T b) return a b ? a : b; void main() cout “max(20, 30) = “ max(20, 30) endl;cout “max(t, v) = “ max(t, v) endl;cout “max(10.1, 15.2) = “ max(10.1, 15.2) endl; ,返回两个元素的最大值,8,函数模板 4-3,编译器自动生成int max(int a, int b)return a b ? a : b;float max(float a, float b)return a b ? a : b;char max(
3、char a, char b)return a b ? a : b;,9,函数模板 4-4,演示函数模板的使用,10,类模板 4-1,提供了对类中的类型进行参数化的方法从类模板产生类的过程称为模板的实例化定义模板类的对象 classname objectname(arglist);,11,类模板 4-2,template class Stack public:Stack(int = 10);Stack() delete stackPtr;int push(const T,可以存放任何对象的栈,12,类模板 4-3,template void square(C num, C *result)*r
4、esult = num * num; template class Array public:int getlength() return length;T ,函数模板,类模板,13,类模板 4-4,演示类模板的使用,14,STL简介 2-1,标准模板库(STL)是一个C+编程库它的组件是高度参数化的使C+程序员能够进行通用的程序设计,15,STL简介 2-2,包括 容器类 算法 迭代器 标准模板库(STL)中 通用算法被实现为函数模板 容器被实现为类模板,16,容器类,容纳其他对象的类 包括 vector、list、deque、set、mutilset、map、multimap、hash set、hash multiset、hash map和hash multimap 其中每个类都是一个模板,能够被实例化容纳任意对象类型,17,算法,用于操纵容器中所保存的数据有的算法与容器类是分离的,18,迭代器,将算法与容器分离的一种机制 允许程序顺序地遍历一个容器中的元素 有些迭代器(如istream和ostream迭代器)与容器无关,19,总结,函数模板 类模板 标准模板库(STL),20,你学会C+了吗?,