C++ STL容器用法大全

目录

🌟 STL容器全景图

🚀 十大容器速查

1. vector(动态数组)

2. deque(双端队列)

3. list(双向链表)

4. forward_list(单向链表)

5. array(固定大小数组)

6. set(有序集合)

7. map(有序映射)

8. stack(栈适配器)

9. queue(队列适配器)

10. priority_queue(优先队列适配器)

🧩 容器选择决策树

🎯 关联容器特性矩阵

💡 适配器三剑客对比


🌟 STL容器全景图

核心维度对比

容器类型 内存布局 随机访问 插入/删除效率 迭代器失效风险 典型应用场景
vector 连续 ✅ O(1) 尾部O(1) 扩容时全失效 动态数组、高频访问
deque 分块连续 ✅ O(1) 头尾O(1) 部分失效 双端队列
list 非连续 任意O(1) 不失效 链表结构
set/map 树状非连续 O(log n) 部分失效 有序集合/映射
priority_queue 堆结构 O(log n) 可能失效 优先级调度

🚀 十大容器速查

1. vector(动态数组)
  • 基本概念
    动态数组,内存连续,支持随机访问。元素按插入顺序存储,大小可动态调整,但需重新分配内存时效率较低。
  • 特点
    • 高效操作:末尾插入/删除元素(push_back/pop_back)为均摊O(1)。
    • 内存连续:支持下标访问([]at()),但中间插入/删除需移动元素,时间复杂度O(n)。
    • 空间预留:通过reserve()预分配内存,减少频繁扩容开销。
    • 内存管理shrink_to_fit()可尝试缩减内存到实际大小。
  • 常用操作
    • push_back(x):尾部添加元素。
    • pop_back():删除尾部元素。
    • erase(pos):删除指定位置元素(需迭代器)。
    • resize(n):调整容器大小。
    • front()/back():访问首尾元素。
  • 适用场景
    需要频繁访问元素且操作集中在末尾(如动态数组、需要随机访问的场景)。

2. deque(双端队列)
  • 基本概念
    双端队列,支持头尾高效插入/删除,内存分块存储(非完全连续)。
  • 特点
    • 高效操作:头尾插入/删除(push_front/pop_front)为O(1),但中间操作效率低。
    • 内存结构:由多个固定大小的数组块组成,下标访问需二次解引用,比vector慢。
    • 兼容性:接口与vector类似,但常数时间较大。
  • 常用操作
    • push_front(x)/push_back(x):头/尾添加元素。
    • pop_front()/pop_back():头/尾删除元素。
    • at(i)/[]:随机访问元素。
  • 适用场景
    需要频繁在头尾操作(如队列、双端扩展的动态数组)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值