成交只是一个开始,成交之后建立一个恒久的关系,你永远都是我的。💓💓💓
目录
✨说在前面
亲爱的读者们大家好!💖💖💖,我们又见面了,上一篇文章我带大家学习了C++的模板初阶。如果大家没有掌握好相关的知识,上一篇篇文章讲解地很详细,可以再回去看看,复习一下,再进入今天的内容。
我们今天简单给大家介绍一下C++标准模板库——STL。STL是C++标准库的重要组成部分,如果大家准备好了,那就接着往下看吧~
👇👇👇
💘💘💘知识连线时刻(直接点击即可)🎉🎉🎉复习回顾🎉🎉🎉
博主主页传送门:愿天垂怜的博客
🍋STL简介
•🌰1.什么是STL?
STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。1994 年,STL 被正式纳入 C++ 标准中。STL 是“Standard Template Library”(标准模板库)的缩写。STL 是 C++ 标准库的一部分,不用单独安装。
标准模板库(STL),它的基本概念就是把数据和操作分离,含有容器(Container)、算法(Algorithm)、迭代器(Iterator)等组件。
•🌰2.STL的版本
🔥原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。
🔥P.J.版本
由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
🔥RW版本
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
🔥SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。
•🌰3.STL的六大组件
通常认为,STL 是由容器、算法、迭代器、函数对象(又称仿函数)、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的。
🔥容器(Containers)
容器是STL中最基本的组件,用于存储和管理数据。STL提供了多种不同类型的容器,包括序列容器(如vector、list、deque)和关联容器(如set、map、multiset、multimap)等。这些容器提供了不同的特性和性能,开发者可以根据具体需求选择合适的容器。
- 序列容器:强调元素的顺序,如vector、list、deque等。它们允许通过索引或迭代器来访问元素。
- 关联容器:内部使用树或哈希表等数据结构,支持通过键来快速访问元素,如set、map、multiset、multimap等。这些容器通常会自动对元素进行排序。
🔥算法(Algorithms)
STL包含了大量的算法,如排序(sort)、查找(find)、遍历(for_each)等。这些算法具有高度的重用性和通用性,可以在不同的容器上进行操作。算法通过迭代器来访问容器中的元素,从而实现了算法与容器的解耦。
🔥迭代器(Iterators)
迭代器是STL中用于遍历容器元素的工具,它提供了一种统一的方式来访问容器中的元素。迭代器分为多种类型,如输入迭代器、输出迭代器、正向迭代器、双向迭代器和随机访问迭代器等。不同类型的迭代器提供了不同的功能,以满足不同的遍历需求。
🔥仿函数(Functors)
仿函数是STL中的一个重要概念,它允许将函数对象作为参数传递给算法,从而实现更加灵活和通用的操作。仿函数类似于函数指针,但它更加灵活,可以包含状态信息。STL提供了一些内置的仿函数,同时也支持用户自定义的仿函数。
🔥适配器(Adapters)
适配器是一种用来修饰容器、迭代器或函数对象接口的组件。适配器提供了一种机制,使得不同的组件之间可以相互协作。STL中常见的适配器包括stack、queue和priority_queue等,它们通过封装底层容器来实现不同的数据结构和访问方式。
🔥分配器(Allocators)
分配器是STL中用于内存管理的组件,它负责为容器分配和释放内存。STL中的容器在实现时通常使用分配器进行内存分配。不同的分配器可以满足不同的内存分配策略和需求。通过自定义分配器,开发者可以更好地控制内存的使用情况,提高程序的性能。
•🌰4.STL的重要性
1.在笔试中
2.在面试中
3.在工作中
• ✨SumUp结语
到这里本篇文章的内容就结束了,本节介绍了C++中STL的相关知识,在后面将会逐一讲解它的组件和应用。希望大家能够认真学习,打好基础,迎接接下来的挑战,期待大家继续捧场~💖💖💖