C++ STL的六大组件和十三项头文件,你能全部列举出来吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1132个文字,预计阅读时间需要5分钟。
STL是由容器、算法、迭代器、函数对象、适配器和内存分配器等六部分组成,其中后四部分是为前两部分服务的。这些组件各自具有独特的意义:
1. 容器:提供数据存储和访问的接口,如向量(vector)、列表(list)等。
2.算法:提供对容器中数据进行操作的方法,如排序(sort)、查找(find)等。
3.迭代器:用于遍历容器中的元素,如前向迭代器、双向迭代器等。
4.函数对象:封装了可重载的操作,如比较函数、算术操作等。
5.适配器:对现有容器进行扩展或修改,如堆(priority_queue)等。
6.内存分配器:管理内存的分配和释放,提高内存使用效率。
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。另外,在惠普实验室最初发行的版本中,STL 被组织成 48 个头文件;但在 C++ 标准中,它们被重新组织为 13 个头文件,如表 2 所示。关于表 1 中罗列的 STL 的构成,初学者简单了解即可,后续章节将专门对它们做系统的深入讲解。
按照 C++ 标准库的规定,所有标准头文件都不再有扩展名。以 <vector> 为例,此为无扩展名的形式,而 <vector.h> 为有扩展名的形式。关于这些头文件的作用和用法,本节不做过多赘述,后续章节会做详细介绍。
但是,或许是为了向下兼容,或许是为了内部组织规划,某些 STL 版本同时存储具备扩展名和无扩展名的两份文件(例如 Visual C++ 支持的 Dinkumware 版本同时具备 <vector.h> 和 <vector>);甚至有些 STL 版本同时拥有 3 种形式的头文件(例如 SGI 版本同时拥有 <vector>、<vector.h> 和 <stl_vector.h>);但也有个别的 STL 版本只存在包含扩展名的头文件(例如 C++ Builder 的 RaugeWare 版本只有 <vector.h>)。
建议读者养成良好的习惯,遵照 C++ 规范,使用无扩展名的头文件。
本文共计1132个文字,预计阅读时间需要5分钟。
STL是由容器、算法、迭代器、函数对象、适配器和内存分配器等六部分组成,其中后四部分是为前两部分服务的。这些组件各自具有独特的意义:
1. 容器:提供数据存储和访问的接口,如向量(vector)、列表(list)等。
2.算法:提供对容器中数据进行操作的方法,如排序(sort)、查找(find)等。
3.迭代器:用于遍历容器中的元素,如前向迭代器、双向迭代器等。
4.函数对象:封装了可重载的操作,如比较函数、算术操作等。
5.适配器:对现有容器进行扩展或修改,如堆(priority_queue)等。
6.内存分配器:管理内存的分配和释放,提高内存使用效率。
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。另外,在惠普实验室最初发行的版本中,STL 被组织成 48 个头文件;但在 C++ 标准中,它们被重新组织为 13 个头文件,如表 2 所示。关于表 1 中罗列的 STL 的构成,初学者简单了解即可,后续章节将专门对它们做系统的深入讲解。
按照 C++ 标准库的规定,所有标准头文件都不再有扩展名。以 <vector> 为例,此为无扩展名的形式,而 <vector.h> 为有扩展名的形式。关于这些头文件的作用和用法,本节不做过多赘述,后续章节会做详细介绍。
但是,或许是为了向下兼容,或许是为了内部组织规划,某些 STL 版本同时存储具备扩展名和无扩展名的两份文件(例如 Visual C++ 支持的 Dinkumware 版本同时具备 <vector.h> 和 <vector>);甚至有些 STL 版本同时拥有 3 种形式的头文件(例如 SGI 版本同时拥有 <vector>、<vector.h> 和 <stl_vector.h>);但也有个别的 STL 版本只存在包含扩展名的头文件(例如 C++ Builder 的 RaugeWare 版本只有 <vector.h>)。
建议读者养成良好的习惯,遵照 C++ 规范,使用无扩展名的头文件。

