第13章 标准模板库
标准模板库(Standard Template Library,STL)不是面向对象的编程,而是一种新的编程模式,即泛型编程(Generic Programming)。STL是C++标准库的组成部分,它是个庞大且复杂的系统,仅STL就可以写出厚达千页的技术书籍,所以本章不可能面面俱到地进行介绍,重点在于介绍泛型编程的思想和本质,以及一些常用的方法,为初学者学习STL提供一些感性认识,起到抛砖引玉的作用。
注意
由于STL是一项比较新的技术,而VC6又是微软公司开发得比较早的一款编译器,其对STL的支持并不是太好,因此在学习本章时,推荐使用较新的VC 2005或VC 2008编译器。
本章主要涉及以下知识点。
❑STL:介绍STL的概念、容器、适配器、迭代器和算法。
❑序列式容器及其操作:介绍几种常用的序列式容器的使用。
❑关联式容器及其操作:介绍几种常用的关联式容器的使用。
❑迭代器:介绍迭代器的概念、类型及其使用。
❑泛型算法:介绍函数对象及常用算法分类。
❑适配器:介绍容器、迭代器和函数适配器的使用。
❑基类与派生类对象之间的转换:介绍基类与派生类对象之间如何进行转换。
13.1 理解STL
STL库是用模板(Template)写出来的,在第12章中已经介绍过模板是STL库的基础所在。大致来说,STL是由以下4部分组成的。
❑容器(Container)
❑迭代器(Iterator)
❑容器适配器(Adapter)
❑算法(Algorithm)
容器、容器适配器和迭代器都是用类模板实现的,迭代器用于遍历容器中的每一个元素,算法用于操作数据。
13.1.1 容器
如果没有STL的支持,在处理一些复杂问题时,要自行设计存储模式,如数组管理和插入删除操作等,不但很烦琐,而且错误频出,是程序出现问题最多的地方。STL运用模板类库机制,为数据存储、查找和其他操作提供了一整套方案,大大提高了程序的正确性,不仅如此,类库还对常用的许多操作进行了优化处理,大大提高了程序的运行效率。
容器即是可容纳一些数据的模板类,STL中包含vector、list、deque、set、map、multimap和multiset等容器。