当前位置: 首页 > news >正文

C++ 标准容器 STL

C++ 标准容器 STL

STL 清单

1. 序列式容器

容器头文件逻辑结构默认底层容器特点operator[]常用频率
std::vector<vector>动态数组连续内存块随机访问 O(1),尾部增删 O(1),中间插入删除 O(n),内存连续缓存友好✅ 支持(随机访问 O(1))⭐⭐⭐⭐⭐ (极高)
std::deque<deque>双端队列分段连续数组首尾增删 O(1),支持随机访问 O(1),中间插入删除 O(n),内存非完全连续✅ 支持(随机访问 O(1))⭐⭐⭐ (中等)
std::list<list>双向链表离散节点+双向指针任意位置插入删除O(1),不支持随机访问,遍历较慢,内存开销大❌ 不支持(非随机访问迭代器)⭐⭐ (较低)
std::forward_list<forward_list>单向链表离散节点+单向指针仅支持前向遍历,头部插入O(1),比list更省内存,无size()方法❌ 不支持(非随机访问迭代器)⭐ (极低)
std::array<array>固定大小数组栈上连续内存编译期确定大小,零开销抽象,支持STL接口和边界检查(at),不可动态扩容✅ 支持(随机访问 O(1))⭐⭐⭐⭐ (高)

2. 有序关联式容器

容器头文件逻辑结构默认底层容器特点operator[]常用频率
std::set<set>有序唯一集合红黑树元素自动排序且唯一,查找/插入/删除 O(log n),支持范围查询❌ 不支持(无 Key-Value 结构)⭐⭐⭐⭐ (高)
std::multiset<set>有序可重复集合红黑树允许重复元素,其余同 set,count() 返回重复次数❌ 不支持(无 Key-Value 结构)⭐⭐ (较低)
std::map<map>有序键值对映射红黑树Key 唯一且自动排序,Value 通过 Key 访问,查找/插入 O(log n)✅ 支持(按 Key 访问,不存在则插入,O(log n))⭐⭐⭐⭐⭐ (极高)
std::multimap<map>有序可重复键映射红黑树允许重复 Key,需用 equal_range() 获取所有匹配项❌ 不支持(Key 不唯一,语义不明确)⭐ (极低)

3. 无序关联式容器

容器头文件逻辑结构默认底层容器特点operator[]常用频率
std::unordered_set<unordered_set>无序唯一集合哈希表平均查找/插入 O(1),最坏 O(n),元素无序,需自定义哈希函数❌ 不支持(无 Key-Value 结构)⭐⭐⭐⭐ (高)
std::unordered_multiset<unordered_set>无序可重复集合哈希表允许重复元素,平均 O(1) 操作,无序❌ 不支持(无 Key-Value 结构)⭐ (极低)
std::unordered_map<unordered_map>无序键值对映射哈希表Key 唯一,平均查找 O(1),高频查找场景首选,无序✅ 支持(按 Key 访问,不存在则插入,平均 O(1))⭐⭐⭐⭐⭐ (极高)
std::unordered_multimap<unordered_map>无序可重复键映射哈希表允许重复 Key,平均 O(1)❌ 不支持(Key 不唯一,语义不明确)⭐ (极低)

4. 容器适配器

容器头文件逻辑结构默认底层容器特点operator[]常用频率
std::stack<stack>栈(LIFO)std::deque后进先出,仅暴露 push/pop/top,无迭代器,不可遍历❌ 不支持(仅顶部访问,无随机访问语义)⭐⭐⭐⭐ (高)
std::queue<queue>队列(FIFO)std::deque先进先出,仅暴露 push/pop/front/back,无迭代器❌ 不支持(仅首尾访问,无随机访问语义)⭐⭐⭐⭐ (高)
std::priority_queue<queue>优先队列(堆)std::vector出队始终为最大/最小元素,基于二叉堆实现,无迭代器❌ 不支持(仅顶部访问,堆结构不允许随机下标访问)⭐⭐⭐ (中等)

5. C++ 23 扁平关联容器

容器头文件逻辑结构默认底层容器特点operator[]常用频率
std::flat_set<flat_set>排序唯一集合std::vector连续内存+二分查找,缓存友好,中小数据量优于红黑树 set❌ 不支持(无 Key-Value 结构)⭐⭐ (新特性)
std::flat_multiset<flat_set>排序可重复集合std::vector同上,允许重复元素❌ 不支持(无 Key-Value 结构)⭐ (新特性)
std::flat_map<flat_map>排序键值对映射std::vector<pair>Key-Value 分离存储或配对存储,缓存命中率远高于 std::map✅ 支持(按 Key 访问,不存在则插入,O(log n))⭐⭐ (新特性)
std::flat_multimap<flat_map>排序可重复键映射std::vector<pair>同上,允许重复 Key❌ 不支持(Key 不唯一,语义不明确)⭐ (新特性)
http://www.jsqmd.com/news/1181372/

相关文章:

  • 7个颠覆性技巧:如何用AI情绪分析重塑股票预测新范式
  • 从零到一:用HTML+CSS打造你的专属个人主页
  • # 2026福州正规24小时黄金回收,同城应急服务商户盘点 - 奢品小当家
  • Spark Streaming 作业 10 大关键指标监控与告警规则设计
  • Unity热更新实战:PuerTS集成TypeScript三大核心技巧与避坑指南
  • 2026年呼和浩特iPhone租赁怎么选不踩雷?5家平台深度测评与租机方案对比 - 中国华商产业观察网
  • 04-06-YooAsset源码-Unity调试与扫描工具
  • Claude支持多少种语言?官方未公布的18种冷门语种实测清单(含濒危语言翻译可行性报告)
  • 从“记忆”到“探索”:OpenEQA如何为AI Agent构建物理世界认知基准?
  • 终极免费方案:Wand-Enhancer完整指南解锁专业版功能
  • 3分钟解锁WeMod Pro完整功能:终极免费增强指南
  • 基于TPA3128D2与STM32F429的高效数字音频放大系统设计
  • TB67H480FNG与PIC18F46K40组合的嵌入式电机控制方案
  • 终极对比:Llama-3.2-3B-Instruct_rai_1.7.1_npu_4K如何实现NPU性能突破?
  • 【Java零基础连载23】Java 泛型全集|泛型原理、通配符、上下限、类型擦除、面试易错点详解
  • HarmonyOS7 ArkUI 图片九宫格切割 - 正方形裁剪预览与发布效果实战:从状态到页面反馈
  • lvgl_v9之表格控件去除边框
  • gemma-4-e4b-it-OptiQ-4bit混合精度策略详解:155层8位 + 224层4位的智能分配
  • Wand-Enhancer:如何免费解锁Wand专业版功能与远程控制
  • 前端工程师必看:从焦虑到转型AI工程师的实战路径,收藏这份指南!
  • 快速上手AMD gpt-oss-20b量化模型:vLLM部署完整指南(含代码示例)
  • 【2024Q3 AI Office插件黑榜】:曝光7款窃取宏权限、伪造数字签名的高危插件,附微软官方检测工具链
  • Realtek RTL8821CU无线网卡驱动终极指南:Linux系统完整兼容解决方案
  • MTKClient终极指南:3步快速恢复变砖的联发科设备
  • HTML5语义化标签与表单优化实践指南
  • 新手教程:ft_multimedia图像转换功能从入门到精通
  • 数据结构——单双链表
  • 【Notion AI 高效工作流秘籍】:20年IT专家亲授12个真实场景落地技巧,90%用户不知道的隐藏功能
  • 企业级Cursor格式化规范落地实录(含金融/电商/嵌入式3大场景差异化配置矩阵)
  • 正弦位置编码PE到旋转位置编码RoPE