STL库概述

C++ 标准模板库(Standard Template Library,STL)是一套功能强大的 C++ 模板类和函数的集合,它提供了一系列通用的、可复用的算法和数据结构。

STL 的设计基于泛型编程(所以我们可以说stl的设计是基于模版的),这意味着使用模板可以编写出独立于任何特定数据类型的代码

特点 :
代码复用:STL 提供了大量的通用数据结构和算法,可以减少重复编写代码的工作。
性能优化:STL 中的算法和数据结构都经过了优化,以提供最佳的性能。
泛型编程:使用模板,STL 支持泛型编程,使得算法和数据结构可以适用于任何数据类型。
易于维护:STL 的设计使得代码更加模块化,易于阅读和维护。

接下来就为大家介绍STL库的六大组件

容器

容器是STL中最基本的组件之一,提供了各种数据结构,包括向量(vector)、链表(list)、队列(queue)、栈(stack)、集合(set)、映射(map)等。这些容器具有不同的特性和用途,可以根据实际需求选择合适的容器。

容器适配器

适配器用于将一种容器或迭代器适配成另一种容器或迭代器,以满足特定的需求。STL 提供了多种适配器,包括栈适配器(stack adapter)、队列适配器(queue adapter)和优先队列适配器(priority queue adapter)等

空间适配器

空间适配器的本质是连接容器与内存分配器的 “桥梁”,它不仅能为容器分配合理空间,更能在容器操作时高效管理内存,避免浪费和碎片。
它会根据容器的预期使用场景提前分配一块内存,避免容器每次增删元素时都频繁申请小块内存,从而减少系统开销和内存碎片。当预分配空间不足时,它会按一定策略(如翻倍)动态扩容;当元素大量删除时,也能选择性回收空闲内存。
它可以对接不同的内存分配器(如系统默认分配器、自定义高效分配器),让同一容器在不同场景下(如嵌入式设备、高性能服务器)都能使用最适合的内存管理方案,提升灵活性。

迭代器

迭代器用于遍历容器中的元素,允许以统一的方式访问容器中的元素,而不用关心容器的内部实现细节。STL 提供了多种类型的迭代器,包括随机访问迭代器、双向迭代器、前向迭代器和输入输出迭代器等

算法

用于对容器中的元素进行各种操作,包括排序、搜索、复制、移动、变换等。这些算法在使用时不需要关心容器的具体类型,只需要指定要操作的范围即可。

仿函数

仿函数不是真正的函数,而是类,
1.仿函数就是通过类的operator()重载,让一个拥有永久存储功能的类(类的成员函数,成员变量等),用起来像一个函数
2.仿函数作为桥梁,它内部的实现决定了元素的顺序。例如sort默认是排升序,如果把默认仿函数“less<>”改为“greater<>”, 那么sort
将会排降序 (普通函数可能就需要重写整个算法

stl标准模版库的内容太多,一篇博客是不能全讲详细的
未来,我将会对这些组件重要的部分作详细介绍。有句话说的好,不会stl是不敢说自己会C++的。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐