找回密码
 register

QQ登录

只需一步,快速开始

查看: 19|回复: 0

[C++] C++ STL基本组成(6大组件+13个头文件)

[复制链接]

[C++] C++ STL基本组成(6大组件+13个头文件)

[复制链接]
  • 打卡等级:热心大叔
  • 打卡总天数:215
  • 打卡月天数:14
  • 打卡总奖励:213
  • 最近打卡:2025-06-14 16:42:29
Waylee

主题

0

回帖

2万

积分

仙帝

积分
22663
Waylee 2025-6-13 22:47 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×

STL 的组成结构

通常认为,STL 是由容器算法迭代器函数对象适配器内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,各自的含义如表 1 所示:

表 1:STL 组成结构

STL 的组成 含义
容器 一些封装数据结构的模板类,例如 vector 向量容器、list 列表容器等。
算法 STL 提供了大量(约 100 个)的数据结构算法,都是模板函数。这些算法位于std命名空间中,多数位于头文件 <algorithm> 中,少数位于头文件 <numeric> 中。
迭代器 在 C++ STL 中,对容器中数据的读写通过迭代器完成,迭代器扮演容器和算法之间的“胶合剂”。
函数对象 如果一个类将 () 运算符重载为成员函数,这个类称为函数对象类,类的实例称为函数对象(又称仿函数)。
适配器 可以使一个类的接口(模板参数)适配成用户指定的形式,让本来无法协同工作的类得以协作。容器、迭代器和函数都提供适配器。
内存分配器 为容器类模板提供自定义的内存申请和释放功能。通常仅高级用户才需要定制,因此一般用户很少使用。

初学者简单了解上述内容即可,后续章节将对其进行系统的深入讲解。


STL 的头文件组织形式

惠普实验室最初发行的 STL 版本组织为 48 个头文件;但 C++ 标准对它们进行了重组,形成了现在的 13 个头文件,如表 2 所示:

表 2:C++ STL 标准头文件

序号 头文件名
1 <iterator>
2 <functional>
3 <vector>
4 <deque>
5 <list>
6 <queue>
7 <stack>
8 <set>
9 <map>
10 <algorithm>
11 <numeric>
12 <memory>
13 <utility>

本节暂不过多赘述上述头文件的具体作用和用法,后续章节将进行详细介绍。


关于头文件扩展名的说明

根据 C++ 标准库的规定,所有标准头文件都应采用无扩展名的形式。例如:

  • 标准规范<vector>
  • 带扩展名(不推荐):<vector.h>

或许是为了兼容旧代码,或许出于内部组织需要,不同的 STL 实现版本情况不同:

  • Visual C++ 中的 Dinkumware 版本:同时具备 <vector.h><vector>
  • SGI 版本:同时拥有 <vector><vector.h><stl_vector.h> 三种形式。
  • C++ Builder 的 RogueWave 版本:只有 <vector.h> 一种形式。

建议读者养成良好的编程习惯,严格遵守 C++ 标准规范,统一使用无扩展名的头文件。

您需要登录后才可以回帖 登录 | register

本版积分规则

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2025-6-14 18:23 , Processed in 0.096046 second(s), 5 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表