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

STL标准模板库

1. STL 简介

STL 全称是 Standard Template Library,叫做标准模板库
它是 C++语言自带的一套强大工具库,里面包含了很多常用数据结构和算法,而且是模板化写的,非常灵活和高效!

可以理解成:

C++ 官方送给你的一个巨大的“百宝箱”,里面装满了各种你经常需要用的工具。

部分举例简单解释
容器(Container)vector, list, map, set负责存数据的,比如数组、链表、集合、字典等
算法(Algorithm)sort, find, count, accumulate负责处理数据,比如排序、查找、统计、加总等
迭代器(Iterator)指针一样的东西负责在容器中走来走去,访问或修改数据

2. STL 容器类别

(1)序列容器(Sequence Containers)

这些容器按照特定的顺序存储数据,可以通过位置访问数据。它们类似于“数组”或“链表”,但功能更强大。

容器说明访问方式常见操作
vector动态数组,大小可以改变支持随机访问(operator[]at()快速插入尾部、访问元素、动态扩展大小
deque双端队列,可以从两端插入/删除支持随机访问快速在两端插入/删除
list双向链表,元素之间有指针不支持随机访问,支持顺序访问在任意位置插入/删除效率高
array固定大小的数组支持随机访问大小固定,不支持动态扩展
forward_list单向链表,只有一个方向的指针不支持随机访问,顺序访问list 更节省内存,适合单向遍历

(2)关联容器(Associative Containers)

这些容器通过键值对存储数据,并且自动保持元素的有序状态。一般用于查找操作非常高效。

容器说明常见操作
set存储唯一的元素,按升序排列查找、插入、删除、遍历
map存储键值对(key-value),按键的顺序排列查找、插入、删除、遍历
multiset存储可以重复的元素,按升序排列查找、插入、删除、遍历
multimap存储可以重复的键值对,按键的顺序排列查找、插入、删除、遍历

(3)容器适配器(Container Adapters)

容器适配器是对现有容器的一层封装,提供了不同的接口来满足特定的需求。常见的有栈、队列和优先队列。

容器说明常见操作
stack栈,遵循“后进先出(LIFO)”原则push(), pop(), top()
queue队列,遵循“先进先出(FIFO)”原则push(), pop(), front(), back()
priority_queue优先队列,按优先级顺序存储元素push(), pop(), top()

3. STL 迭代器类别

迭代器通过解引用操作 *it 访问元素

4. STL 算法类别

5. 泛型编程和宏

6. 函数模板

7. 类模板

http://www.xdnf.cn/news/2760.html

相关文章:

  • 杰理-ios获取不了时间问题
  • 爬虫过程中如何确保数据准确性
  • Qt/C++面试【速通笔记四】—Qt中的MVC模式
  • VLM-E2E:通过多模态驾驶员注意融合增强端到端自动驾驶——论文阅读
  • RecoNIC 入门:SmartNIC 上支持 RDMA 的计算卸载-FPGA-智能网卡-AMD-Xilinx
  • 【Vue.js】组件数据通信——基于Props 实现父组件--> 子组件传递数据(最基础案例)
  • uniapp自定义头部(兼容微信小程序(胶囊和状态栏),兼容h5)
  • 数据展示功能界面设计与实现及终端控制界面思路(17)
  • 使用OpenCV和dlib库进行人脸关键点定位
  • 2025系统架构师---管道/过滤器架构风格
  • 待验证---Oracle 19c 在 CentOS 7 上的快速安装部署指南
  • Java生成微信小程序码及小程序短链接
  • TensorFlow深度学习框架:从入门到精通的完整指南
  • 基于Java,SSH,Vue电子商品交易二手平台仿闲鱼转转验机系统设计
  • Eureka 深度解析:从原理到部署的全场景实践
  • 喷泉码技术在现代物联网中的应用 设计
  • 组装 (DIY) 一台显示器 (4K 屏支持 4 画面分屏 PBP 1080p x4)
  • 前端基础面试题(4-8)
  • 推荐 1 款 9.3k stars 的全景式开源数据分析与可视化工具
  • Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解
  • 疫苗接种体系进入“全生命周期”时代:公共卫生治理再提速
  • 学习记录:DAY19
  • AI在Java中的场景面试题深度解析
  • 从外卖大战看O2O新趋势:上门私厨平台系统架构设计解析
  • kalibr:相机模型
  • 8.Three.js中的 StereoCamera 立体相机详解+示例代码
  • 第十三章-PHP MySQL扩展
  • 处理对象集合,输出Map<String, Map<String, List<MyObject>>>格式数据,无序组合键处理方法
  • Android学习总结之Java篇(一)
  • 记一次pdf转Word的技术经历