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

C++的STL

C++ STL 快速入门指南

C++ STL(Standard Template Library,标准模板库)是 C++ 标准库的核心组成部分,提供了一套通用的容器迭代器算法函数对象,极大地提高了代码的复用性、效率和可读性。

STL 六大组件

  1. 容器 (Containers):存储数据集合的类模板。
  2. 迭代器 (Iterators):广义指针,用于遍历容器中的元素,连接容器与算法。
  3. 算法 (Algorithms):各种常用算法(排序、查找、复制等)的函数模板。
  4. 函数对象 (Function Objects):行为类似函数的对象(仿函数),用于算法的自定义操作。
  5. 适配器 (Adapters):对容器、迭代器或函数对象进行封装,改变其行为(如 stackqueue)。
  6. 分配器 (Allocators):负责内存管理,通常使用默认值。

最常用的容器

容器类型 容器名称 特点与适用场景
序列容器 vector 动态数组。支持随机访问,尾部插入/删除快,中间/头部慢。最常用
list 双向链表。不支持随机访问,任意位置插入/删除极快。
deque 双端队列。支持随机访问,头尾插入/删除快。
关联容器 set / multiset 有序集合,元素唯一/可重复。基于红黑树,查找/插入/删除 O(log n)。
map / multimap 有序键值对,键唯一/可重复。基于红黑树,用 key 快速查找 value。
无序关联容器 (C++11) unordered_set / unordered_map 哈希表实现。元素无序,查找/插入/删除平均 O(1),性能高。
容器适配器 stack 栈(LIFO),基于 dequelist 实现。
queue 队列(FIFO),基于 dequelist 实现。
priority_queue 优先队列(最大/最小值在队首),基于 vector + 堆算法。

常用算法(位于 <algorithm>

  • 排序sort(v.begin(), v.end())
  • 查找find(v.begin(), v.end(), target)
  • 遍历for_each(v.begin(), v.end(), [](int x){ cout << x; })
  • 变换transform(...)
  • 复制copy(...)
  • 反转reverse(...)

代码示例

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <string>int main() {// 1. vector 容器std::vector<int> numbers = {5, 2, 8, 1, 9};// 2. 排序std::sort(numbers.begin(), numbers.end());// 3. 查找int target = 8;auto it = std::find(numbers.begin(), numbers.end(), target);if (it != numbers.end()) {std::cout << "找到 " << target << " 在索引 " << (it - numbers.begin()) << std::endl;}// 4. 范围 for 遍历for (int n : numbers) {std::cout << n << " ";}// 输出: 1 2 5 8 9std::cout << std::endl;// 5. map 示例std::map<std::string, int> ages = {{"Alice", 25}, {"Bob", 30}};std::cout << "Alice's age: " << ages["Alice"] << std::endl;return 0;
}
http://www.jsqmd.com/news/879930/

相关文章:

  • 日志留存不合规?审计追溯难定位?DeepSeek 3.2+审计日志的4层加密+时间戳锚定机制,立即规避等保2.0扣分风险
  • Grafana 操作进阶:生产级平滑升级与数据备份
  • 岩石识别与展示系统设计文档
  • 踩坑无数!终于捋顺Git基础核心工作流(新手必看)
  • 如何用NightX Client打造终极Minecraft 1.8.9体验?完整功能解析+新手教程 [特殊字符]
  • 卖轴承怎么找客户?下游工厂在哪里
  • 用过才敢说!2026年最值得信赖的专业AI论文网站
  • Tableau Server安全加固与合规运维实战指南
  • 保姆级教程:在Ubuntu 22.04上搞定rMATS 4.1.2安装,附赠conda环境配置与常见报错解决
  • 如何在Mac上免费运行Windows游戏与应用:Whisky完整指南
  • Java小练
  • 权威测评!2026年顶尖AI论文写作软件榜单,高质初稿轻松写
  • CVE-2017-17215实战复现:华为HG532路由器栈溢出漏洞深度解析
  • 2026年5月知名的仿真人造草坪/硅pu篮球场厂家推荐灵动运体(河南)体育科技有限公司 - 品牌鉴赏师
  • 保姆级教程:用向日葵远程在Windows系统上安装Vector CANape 21.0.10(附Demo工程位置详解)
  • 6款主流降AIGC网站 创作效率拉满
  • AI写作辅助平台8款AI写作辅助软件梯队榜,毕业护航!
  • ClamAV更新失败真相:DNS TXT协议与版本兼容性解析
  • 邳州沙发翻新换皮换布面靠谱商家优选推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌、全品类沙发翻新换皮换布一站式服务 - 卓信营销
  • 溧阳沙发翻新换皮换布面靠谱商家优选推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌、全品类沙发翻新换皮换布一站式服务 - 卓信营销
  • 2026年5月有实力的一体化污水提升泵站/一体化泵站厂家推荐河北铄康环保设备有限公司,水质适应性广各类浑浊污水均可稳定输送处理 - 品牌鉴赏师
  • 建立在不同的基线模型上,GAT,GCN,和GIN
  • 2026年5月优秀的EPS外墙装饰/EPS装饰线条厂家推荐丰县建鑫泡沫制品有限公司,雕花构件定制打造建筑独特标识 - 品牌鉴赏师
  • ComfyUI-Impact-Pack V8进阶实战:掌握AI图像智能修复的3大核心场景与性能优化
  • 视觉无感定位破局 孪生技术重构空间管控逻辑
  • 前景理论(Prospect Theory)深入解析
  • 别再滥用CRUD了——用Go和DDD彻底驯服复杂业务
  • 【信息科学与工程学】计算机科学与自动化 ——第六十五篇 虚拟化/MIG 系列02
  • CPT 强化学习(Cumulative Prospect Theory Reinforcement Learning)代码实现
  • Claude在国内用不了?我挨个试了一遍