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

【C++】STL简介

成交只是一个开始,成交之后建立一个恒久的关系,你永远都是我的。💓💓💓

目录

  ✨说在前面

🍋STL简介

•🌰1.什么是STL?

•🌰2.STL的版本

•🌰3.STL的六大组件

•🌰4.STL的重要性

 • ✨SumUp结语


  ✨说在前面

亲爱的读者们大家好!💖💖💖,我们又见面了,上一篇文章我带大家学习了C++的模板初阶。如果大家没有掌握好相关的知识,上一篇篇文章讲解地很详细,可以再回去看看,复习一下,再进入今天的内容。

我们今天简单给大家介绍一下C++标准模板库——STL。STL是C++标准库的重要组成部分,如果大家准备好了,那就接着往下看吧~

  👇👇👇
💘💘💘知识连线时刻(直接点击即可)

【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 SystemsInc公司开发,继承自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.在工作中

网上有句话说: 不懂 STL ,不要说你会 C++” STL C++中的优秀作品,有了它的陪伴,许多底层 的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

 • ✨SumUp结语

到这里本篇文章的内容就结束了,本节介绍了C++中STL的相关知识,在后面将会逐一讲解它的组件和应用。希望大家能够认真学习,打好基础,迎接接下来的挑战,期待大家继续捧场~💖💖💖


http://www.mrgr.cn/news/5793.html

相关文章:

  • 社区流浪动物救助系统-计算机毕设Java|springboot实战项目
  • 探索TensorFlow:深度学习的未来
  • 手把手教你手写单例,六种实现方式一网打尽!
  • fpga图像处理实战-对数变换
  • Mybatis的分页,延迟加载和缓存
  • docker具体操作
  • Qt实现圆型控件的三种方法之子类化控件并重写paintEvent
  • webpack打包html
  • 使用docker-compose运行kafka及验证(无需zookpeer)
  • 【ORACLE】minus() 函数
  • vue3 侧边栏实现
  • 探索STM32平台中MK米客方德SD NAND的高效数据存储解决方案
  • 【每日刷题】Day105
  • 数据库系统 第22节 事务隔离级别案例分析
  • Parallels Desktop 19 for Mac破解版 附带parallels desktop 2024最新激活密钥
  • 26. CSS 继承属性速查表 内部聚焦
  • 《亿级流量系统架构设计与实战》第十一章 Timeline Feed服务
  • 命令模式:如何利用命令模式实现手游后端架构?
  • GO-REDIS的一些高级用法
  • mac GlobalProtect 连接失败