第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等容器。