STL序列容器总结
序列容器 | 数据结构 | 迭代器类型 | 优缺点 | 头文件 |
---|---|---|---|---|
array | 固定数组 | 随机访问迭代器 | 快速访问、在中间插入、删除元素效率较低,无法扩容 | array |
vector | 动态数组 | 随机访问迭代器 | 快速访问、在中间插入、删除元素效率较低,容量可以动态增加 | vector |
deque | 双端队列 | 随机访问迭代器 | 快速随机访问、两端插入、删除元素效率较高 | deque |
list | 双端队列 | 双向迭代器 | 不支持随机访问、可双向遍历、任意位置插入、删除元素效率高 | list |
forward_list | 单向链表 | 前向迭代器 | 不支持随机访问、单向遍历、删除元素效率高 | forward_list |
STL容器适配器总结
容器适配器 | 数据结构 | 底层应用 | 迭代器 | 特点 | 头文件 |
---|---|---|---|---|---|
stack | 栈 | 默认deque,也可以用vector或list | 不支持 | 先进后出FILO | stack |
queue | 队列 | 默认deque,也可以用list | 不支持 | 先见先出FIFO | queue |
priority_queue | 优先队列 | 底层默认使用vector,也可以使用heap处理规则来排序。容器也可以使用deque | 不支持 | 优先级最高(或最低)的元素先出 | queue |
STL关联容器总结
关联容器 | 数据结构 | 底层实现 | 迭代器 | 优缺点 | 头文件 |
---|---|---|---|---|---|
set | 集合 | RBTree | 双向迭代器 | Key唯一、有序 | set |
map | 映射 | RBTree | 双向迭代器 | Key唯一、有序、value可以重复 | map |
multiset | 多重集合 | RBTree | 双向迭代器 | Key可重复、有序 | set |
multimap | 多重映射 | RBTree | 双向迭代器 | Key可重复、有序、value可以重复 | map |
unordered_set | 无序集合 | hash_table | 双向迭代器 | Key唯一、无序 | unordered_set |
unordered_map | 无序映射 | hash_table | 双向迭代器 | Key唯一、无序、value可以重复 | unordered_map |
unordered_multiset | 无序多重集合 | hash_table | 双向迭代器 | Key可重复、无序 | unordered_set |
unordered_multimap | 无序多重映射 | hash_table | 双向迭代器 | Key、无序、value可以重复 | unordered_map |