序列式容器是STL中的一类容器,它们以严格的线性顺序来存储元素。这个顺序由元素被插入的位置决定,每个元素都有固定的前后关系。
序列式容器包括以下容器:
容器类型 | 数据结构 | 长度特性 | 访问效率 | 插入删除效率 | 内存布局 |
array<T,N> | 固定数组 | 编译时固定 | O(1) 随机访问 | 不支持增删元素 | 连续内存 |
vector<T> | 动态数组 | 运行时可变 | O(1) 随机访问 | 尾部O(1),中间O(n) | 连续内存 |
deque<T> | 分块数组 | 运行时可变 | O(1) 随机访问 | 头尾O(1),中间O(n) | 分段连续 |
list<T> | 双向链表 | 运行时可变 | O(n) 顺序访问 | 任意位置O(1) | 非连续 |
forward_list<T> | 单向链表 | 运行时可变 | O(n) 顺序访问 | 任意位置O(1) | 非连续 |
冷知识:stack和queue属于容器适配器,它们基于deque等序列容器实现,提供特定的接口(LIFO/FIFO)。虽然它们管理的是序列式数据,但在STL官方分类中与直接存储元素的序列容器有所区别。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程