STL是什么

张开发
2026/4/18 5:52:03 15 分钟阅读

分享文章

STL是什么
小白学习中……STL 是什么STL 一套基于「模板 泛型编程」的 C 标准组件库。它把「数据结构 算法 迭代器」三者解耦用统一接口粘合。是一套基于泛型编程思想实现的、高效、可复用的模板代码集合提供了常用的数据结构与算法。是C 标准模板库是 C 标准库的核心组成部分。STL 六大核心组件1. 容器Containers封装常用数据结构vector、list、stack、queue、map、set 等。2. 算法Algorithms排序、查找、删除等通用操作sort、find、reverse 等。3. 迭代器Iterators用于遍历容器是容器与算法的桥梁。4. 仿函数Functors行为类似函数用于自定义操作规则。5. 适配器Adapters对容器、迭代器、仿函数进行包装stack、queue 等。6. 分配器Allocators管理内存分配底层使用。其中算法不依赖具体容器只依赖迭代器。迭代器就是抽象的指针给算法提供统一遍历方式。STL 是先定规则再做组件所有组件都遵守这套规则。这套规则包括迭代器必须支持 begin() 、 end() 、 *it 、 it算法只认迭代器不认容器容器必须提供统一的行为 size() 、 empty() 、 clear() …算法、容器、迭代器、分配器、仿函数、适配器六大部分按固定协议交互☞为什么 STL 这种规范思想直接影响了后来的 Java 集合、Python 迭代器、Rust 标准库 (›´ω‹ )STL 不是发明了数据结构而是发明了一套「数据结构之间如何协作」的通用协议。在 STL 之前数组是数组链表是链表排序是排序它们之间没有统一接口。STL 之后所有容器都能被同样方式遍历所有算法能用于所有容器你自己写的容器能无缝接入标准库。泛型编程及其本质泛型编程 对「类型」进行抽象只写逻辑不绑定具体类型。它的本质参数化类型 编译期多态。int max(int a, int b) {return a b ? a : b;}double max(double a, double b) {return a b ? a : b;}问题是逻辑一模一样只是类型不同却要重复写 N 遍。template typename TT max(T a, T b) {return a b ? a : b;}现在写的不是针对 int也不是 double而是「某种可比较的类型 T」。这就叫把类型也变成参数。STL 的意义 O(∩_∩)O1. 提供通用、高效的数据结构与算法无需重复实现。​2. 基于泛型编程实现代码高度复用与数据类型无关。​3. 静态类型安全编译期检查运行效率高。​4. 组件化设计容器、算法、迭代器分离灵活易用。​5. 是 C 标准库核心提高开发效率、减少错误。

更多文章