C++ STL 容器使用的底层数据结构

STL 容器 底层数据结构 查找 插入 删除
vector 动态数组 O(1) 随机访问 尾部 O(1)(均摊) 中间 O(n)
array 静态数组 O(1) 不支持扩容 不支持
deque 分段连续数组(Map + Block) O(1) 两端 O(1) 两端 O(1)
list 双向链表 O(n) O(1) O(1)
forward_list 单向链表 O(n) O(1) O(1)
set 红黑树 O(log n) O(log n) O(log n)
multiset 红黑树 O(log n) O(log n) O(log n)
map 红黑树 O(log n) O(log n) O(log n)
multimap 红黑树 O(log n) O(log n) O(log n)
unordered_set 哈希表 平均 O(1) 平均 O(1) 平均 O(1)
unordered_map 哈希表 平均 O(1) 平均 O(1) 平均 O(1)
unordered_multiset 哈希表 平均 O(1) 平均 O(1) 平均 O(1)
unordered_multimap 哈希表 平均 O(1) 平均 O(1) 平均 O(1)
stack 默认 deque(也可 vectorlist --- 栈顶 O(1) 栈顶 O(1)
queue 默认 deque --- 尾部 O(1) 头部 O(1)
priority_queue 二叉堆(Heap) 最大值 O(1) O(log n) O(log n)
STL 算法 底层算法 时间复杂度
sort() Introsort(快速排序 + 堆排序 + 插入排序) O(n log n)
stable_sort() 归并排序 O(n log n)
partial_sort() 堆排序 O(n log k)
nth_element() Introselect(快速选择) 平均 O(n)
make_heap() 建堆 O(n)
push_heap() 堆上滤 O(log n)
pop_heap() 堆下滤 O(log n)
binary_search() 二分查找 O(log n)
lower_bound() 二分查找 O(log n)
upper_bound() 二分查找 O(log n)
equal_range() 二分查找 O(log n)
find() 顺序查找 O(n)
find_if() 顺序查找 O(n)
count() 顺序遍历 O(n)
for_each() 顺序遍历 O(n)
transform() 顺序遍历 O(n)
copy() 顺序复制 O(n)
copy_if() 顺序复制 O(n)
remove() 双指针(快慢指针) O(n)
unique() 双指针 O(n)
reverse() 双指针交换 O(n)
rotate() 三次翻转/循环移动 O(n)
merge() 归并 O(n)
set_union() 双路归并 O(n)
set_intersection() 双路归并 O(n)
set_difference() 双路归并 O(n)
min_element() 顺序扫描 O(n)
max_element() 顺序扫描 O(n)
accumulate() 累加 O(n)
相关推荐
讳疾忌医丶5 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
2401_868534786 小时前
OpenStack 架构全景:八个核心组件深度拆解
c++·需求分析
软件课代表CiCi6 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
蒸蒸yyyyzwd7 小时前
从面经中学到的三件事
c++·笔记
时时三省7 小时前
【时时三省】计算机c语言二级考试选择题重点
c++
ThornArmor10 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
Elsa️74612 小时前
算法一周刷题总结
c++·算法
风合星语12 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真
小羊没烦恼!12 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
welfare96212 小时前
新号别搞:内存管理+模板初阶+STL简介
开发语言·c++