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

C++ :STL

STL(Standard Template Library)是 C++ 标准库的核心组成部分,提供了通用的模板类和函数,通过泛型编程来高效处理数据结构与算法。它由四大核心组件构成:

1. 容器(Containers)

用于管理数据集合,分为以下几类

序列容器

vector:动态数组,支持随机访问,尾部插入 / 删除效率高(均摊 O (1))。
list:双向链表,任意位置插入 / 删除 O (1),但不支持随机访问。
deque:双端队列,支持两端高效插入 / 删除(O (1)),随机访问 O (1)。
array:固定大小数组,替代原生数组,提供 STL 接口(如迭代器、size())。
forward_list:单向链表,内存占用更小,插入 / 删除效率略高于list。

关联容器

set/multiset:基于红黑树(平衡二叉搜索树),元素自动排序,set不允许重复,multiset允许。
map/multimap:键值对集合,基于红黑树,map键唯一,multimap键可重复。
unordered_set/unordered_multiset:基于哈希表,元素无序,查找、插入、删除平均 O (1)。
unordered_map/unordered_multimap:无序键值对,基于哈希表,性能同上。

容器适配器

stack:后进先出(LIFO),默认基于deque实现。
queue:先进先出(FIFO),默认基于deque实现。
priority_queue:优先队列,基于堆结构,默认最大堆(vector+less比较器)。

2. 迭代器(Iterators)

提供访问容器元素的统一接口,类似指针,支持:

输入 / 输出迭代器:单向读取 / 写入(如istream_iterator)。
前向迭代器:支持++(如forward_list的迭代器)。
双向迭代器:支持++和–(如list、set的迭代器)。
随机访问迭代器:支持跳跃访问(如vector、deque的迭代器)。
迭代器失效:当容器结构被修改(如插入 / 删除元素)导致迭代器指向的内存无效。例如:
vector在扩容或中间插入时,所有迭代器失效。
list删除元素时,仅被删除元素的迭代器失效。

3. 算法(Algorithms)

独立于容器的通用函数,通过迭代器操作数据,如:

排序:sort()、stable_sort()。
查找:find()、binary_search()。
修改:transform()、replace()。
数值计算:accumulate()、partial_sum()。

4. 函数对象(Function Objects)

重载()运算符的类或结构体,用于算法的自定义操作,例如:

greater()用于降序排序。
自定义谓词函数用于find_if()。

常见对比问题

map vs set

map:存储键值对(pair<const Key, T>),键唯一,基于红黑树或哈希表。
set:仅存储键,键唯一,基于红黑树或哈希表。

map vs unordered_map

在这里插入图片描述

push_back vs emplace_back

push_back:接受已构造的对象,可能触发拷贝 / 移动构造。
emplace_back:就地构造对象,直接传入参数,避免临时对象开销。

vector vs list

特性

相关文章:

  • 蓝桥杯框架-LED蜂鸣器继电器
  • 【C++】哈希的概念与实现
  • PCL点云库点云数据处理入门系列教材目录(2025年5月更新....)
  • 从 Word2Vec 到 BERT:AI 不止是词向量,更是语言理解
  • 如何用 OceanBase 的 LOAD DATA 旁路导入进行大表迁移
  • python自学笔记3 控制结构
  • 用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践
  • 在金融发展领域,嵌入式主板有什么优点?
  • goldenDB创建函数索引报错问题
  • 5G金融互联:迈向未来金融服务的极速与智能新时代
  • 每日c/c++题 备战蓝桥杯(洛谷P4715 【深基16.例1】淘汰赛 题解)
  • 安装NASM
  • 虚拟机的三个核心类加载器
  • 【VBA/word】批量替换字体大小
  • 深入解析分布式数据库TiDB:原理、优化与架构实践
  • 宏汇编以及浮点程序设计实验
  • 练习小项目5:基础计算器
  • 算法竞赛 Java 高精度 大数 小数 模版
  • 2025年即时通讯APP如何抵御DDoS攻击?全链路防御方案与实战解析
  • 5.19本日总结
  • 一日双赛“莎头组合”赢得强势,但国乒已开始品尝输球滋味
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 国家统计局:要持续加大好房子建设供应力度,积极推动城市更新行动和保障房建设
  • 媒体评教师拎起学生威胁要扔下三楼:师风师德不能“悬空”
  • 复旦一校友捐赠1亿元,却不留名
  • 倒票“黄牛”屡禁不绝怎么破?业内:强化文旅市场票务公开制度