STL简介

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c++,Python等
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:了解c++中的STL库

> 毒鸡汤:路难行,行路难,-身汗水,满心长。脚下百里路,头顶艳阳天。坚定如磐石,信念似火烧。
> 望小伙伴们点赞👍收藏✨加关注哟💕💕 

🌟前言

咱们今天很轻松,咱们讲讲故事,大家拿好小板凳。😘😘😘

 ⭐什么是STL

概念:

STL (standard template libaray - 标准模板库):是 C++ 标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

也就是说,咱们前面数据结构都可以库,顺序表,单链表,栈,队列....都可以调用库,有人就说,那学数据结构干毛,直接不学咯,我反手就是一巴掌,学习底层代码,是学习的必经之路,咱要脚踏实地,切不可一步登天。

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 要阅读部分源代码,主要参考的就是这个版本。

可想而知,咱们c++的库是多样化的,相信咱这里也大佬,觉得目前STL用起来不爽,自己写一个,也行,正所谓每个勇士都需适合自己的刀,方可砥砺前行,咱们就先用用他人的,用起来还是合大众的。

STL的六大组件

容器:放数据---组织数据---本质:就是对常见的数据结构进行封装

算法:相当于把迭代器 和 容器 结合到了一块,算法写好以后每个容器都可以使用,就是迭代器的功劳。

迭代器:算法写好以后,让每个容器都可以使用。

适配器:STL迭代器适配器是指一些函数和类,它们可以将一个迭代器转换成另一个迭代器,或者修改一个迭代器的行为。这些适配器可以帮助我们更方便地使用STL中的算法和容器。

仿函数:STL仿函数(Function Object)是一种行为类似于函数的对象,它可以像函数-样被调用,但是它可以保存状态,可以有自己的成员变量和成员函数。STL仿函数可以作为STL算法的参数,用于指定算法的具体行为。

空间配置器:STL自己封装一个内存池---高效空间申请和释放以及对空间进行管理。

这里就了解了解,见见肉长啥个子样。🤪🤪🤪

 ⭐STL的重要性

无论是在笔试还面试,都考察的重点。

比如说我们学习栈时的一道题目:用两个栈实现队列_牛客题霸_牛客网

 ⭐怎么学习STL

在一本书上是这样写的《The C++ Standand Library》

  🌟结束语

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小说手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/191600.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 9 数据库

4 设置键的生存时间或过期时间 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(TimeToLive,TTL),在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间…

记录联系ThinkPad T490扬声器无声音但插耳机有声音的解决办法

型号:联想ThinkPad T490,系统Win10 64位。 现象:扬声器无声音,插耳机有声音。且右下角小喇叭正常,设备管理器中驱动显示一切也都正常(无黄色小叹号)。 解决办法: 尝试了各种方法&a…

在vmware中给linux添加硬盘

1.必须在断开linux电源的情况下,才能添加硬盘成功。注:自己好几次在开机状态下添加硬盘都失败了,然后关机后,又试了下,居然成功了。

链式前向星

性质 一种邻接表的写法 关键点: 数据结构 // 边 class Edge {int next; // 指向相同起始点的下一条边int to; // 邻接点int w; // 权重 } Edge[] edge new Edge[9]; // edge[cnt]表示编号为cnt的边// 用数组表示 int[] next new int[MAX]; int[] to new int[M…

【机器学习Python实战】logistic回归

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习python实战 欢迎订阅!后面的内容会越来越有意思~ ⭐内容说明:本专栏主要针对机器学习专栏的基础内容进行python的实现,部分…

算法-二叉树-简单-二叉树的遍历

记录一下算法题的学习6 首先我们要回忆一下怎么样遍历一个树: 三种遍历概念 先序遍历:先访问根节点,再访问左子树,最后访问右子树。 后序遍历:先左子树,再右子树,最后根节点。 中序遍历&…

DEEP-FRI: Sampling Outside the Box Improves Soundness论文学习笔记

1. 引言 前序博客有: DEEP FRI协议A summary on the FRI low degree test前2页导读RISC Zero的手撕STARKReed-Solomon Codes——RS纠错码Reed-Solomon Codes及其与RISC Zero zkVM的关系 Eli Ben-Sasson等人2019年论文《DEEP-FRI: Sampling Outside the Box Impro…

从键盘输入5个学生的信息(姓名、学号、成绩), 存入一个结构体数组中,计算平均分,并按成绩 高低排序并输出.

代码如下 #include<stdio.h> #include<string.h> #include<stdlib.h> /* 1.练习结构体数组排序   从键盘输入5个学生的信息&#xff08;姓名、学号、成绩&#xff09;,存入一个结构体数组中&#xff0c;计算平均分&#xff0c;并按成绩高低排序并输出. */…

harmonyOS鸿蒙开发工具下载安装以及使用流程

注册账号 进入鸿蒙官方网站&#xff1a;https://www.harmonyos.com/ 推荐使用手机号注册 进行实名认证 下载开发环境 华为集成开发环境IDE DevEco Device Tool下载 | HarmonyOS设备开发 下载开发工具 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装 无脑下一…

车载开发岗位如何?Android程序员是否转行

这几年的大环境让大家都过的不安逸&#xff1b;社会动荡与就业问题一直困扰了不少人。在大家都认为的高薪工作程序员行业中&#xff0c;现在也是费力不讨好裁员风潮大部分指向互联网。 我们Android开发基本上已经感受很久了&#xff0c;就这就业问题很难存活。对此我们的目光都…

【MySQL学习笔记-001】- 创建表、插入数据、查看数据库结构

创建employees表 当创建一个表时&#xff0c;需要指定表的名称和每个列的名称和数据类型。以下是一个示例SQL语句&#xff0c;用于创建一个名为"employees"的表&#xff0c;其中包含员工ID、姓名、职位和工资等列&#xff1a; CREATE TABLE employees (employee_id…

AI Navigation导航系统_unity基础开发教程

AI Navigation导航系统 安装插件烘焙导航系统障碍物创建人物的AI导航动态障碍物 在unity编辑器中&#xff0c;有一个灰常好用的插件&#xff1a;Navigation。有了它1&#xff0c;你就可以实现人物自动走到你鼠标点击的位置&#xff0c;而且还会自动避开障碍物&#xff0c;下面就…