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

C++初阶-STL简介

目录

1.什么是STL

2.STL的版本

3.STL的六大组件

4.STL的重要性

4.1在笔试中

4.2在面试中

4.3.在公司中

5.如何学习STL

6.总结和之后的规划



1.什么是STL

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

用简单易懂的话来说就是用模板实现数据结构和算法的库,我们在之前讲了顺序表、链表、二叉树等数据结构,这个库里面都包含,所以我们现在用STL就可以不用自己写数据结构和算法了,这样简化了我们的时间。

2.STL的版本

原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许
任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原
始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。不是C++始祖(始祖你猜,之后面试可能要考,如果不知道了就去找吧(doge))开发的。

首先我们需要了解一下开源和闭源,开源即开放源代码,这是一个很好的精神,免费的使用,但是这个版本规定如果你做了有效的修改你也需要进行开源,公布自己改变的地方!而闭源就不一样了,不能修改。开源和闭源都有各自的好处,开源虽然看似很好,但是可维护性不强,之后没有多少人会去维护的,但是闭源就有人来维护了。


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

我们常用的git/Liunx都是开源的,而Windows、mac、os都是闭源的。

3.STL的六大组件

空间适配器里面的allocator就是内存池,其中我们主要注意的是算法和容器(现阶段),因为容器涉及到数据结构的知识等等,而算法就涉及到我们之前的排序等等算法,总之注意的就是这几个。

4.STL的重要性

4.1在笔试中

(1)二叉树的层序打印

题目链接:把二叉树打印成多行_牛客题霸_牛客网

这些题目我们现在是不会做的(虽然之前写过),但是之后学完STL就会了。

(2)重建二叉树

题目链接:重建二叉树_牛客题霸_牛客网

(3)用两个栈实现一个队列

题目链接:用两个栈实现队列_牛客题霸_牛客网

这些之前我们基本上写过,但是都要把数据结构的基本上所有代码都拷贝过去很麻烦,但是现在我们学了C++中的STL后就会好一些了。

4.2在面试中

这里只提供一些面试中的题目,只要知道基本上是什么样就可以了。

4.3.在公司中

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

5.如何学习STL

学STL有三个境界:

第一境界:熟用STL;

第二境界:了解泛型技术的内涵与STL的学理乃至实作;

第三境界:扩充STL。

三个境界的总结就是:能用,明理,能扩展 。我们主要学到第二个境界就可以了,只要前两个境界学得好,第三个境界就没有问题。

为什么我们要扩充STL呢?

有些数据结构和算法在STL中未实现,所以需要扩充。

相当于爬->走->跑。

所以加油吧。

6.总结和之后的规划

STL在我们C++的学习至关重要,所以之后也就需要每一篇博客要听懂,但是更多的是自己能用,而不是简单的看,只能说C++本来是很难的,必须用实际的代码去学C++,和我之前自己写的日期管理系统一样,虽然有些不足,但是也要写出一些成果就可以了!

之后我将从容器的string和vector开始,但是后面又会加一些内容才讲模板进阶,而那些stack和queue的扩展内容可能需要之后再讲,到时候我会发起一项投票,因为到时候我可能需要学Liunx或者先把C++基本内容学完,所以需要讲C++扩展内容还是Liunx都需要额外的理解的,所以到时候再进行简单的投票吧!反正不会完全按照我的文件中的顺序来进行讲解,所以到时候还需要绕一些额外的知识(这些知识还没学,我也不懂)。

下节将讲解string了,这个string我们主要是学它的成员函数等等,需要进入这个网页:

https://legacy.cplusplus.com/reference/

建议先去学习一下这个文档的使用吧,之后会频繁用到的。

这讲不是来讲解知识的,这讲是为了后面的内容做铺垫的,关于string的内容,我可能需要两篇博客来进行讲解,因为它里面虽然在界面的函数少,但是几乎每一个成员函数都有重载函数,因为它比STL诞生得早,所以封装的函数太多了,但是不是每个函数都要掌握,主要知道一些重要函数的用法就可以了(具体下一节再讲)。string部分需要到4月30日前后才可以更新了哦。

http://www.xdnf.cn/news/2261.html

相关文章:

  • 怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了
  • FlinkUpsertKafka深度解析
  • 重温TCP通信过程
  • C++ 类与对象(中)—— 默认成员函数与运算符重载的深度解析:构造函数,析构函数,拷贝构造函数,赋值运算符重载,普通取地址重载,const取地址重载
  • 【项目篇之垃圾回收】仿照RabbitMQ模拟实现消息队列
  • HTTP header Cookie 和 Set-Cookie
  • 系统架构师---基于规则的系统架构
  • FreeBSD可以不经过windows服务器访问windows机器上的共享文件吗?
  • PID程序实现
  • 高速系统设计理论基础
  • (done) 吴恩达版提示词工程 4. 摘要 (生成摘要,指定信息摘要,提取指定信息,多条评论摘要)
  • 什么是智能导诊知识库?
  • Pinia 详细解析:Vue3 的状态管理利器
  • 【油猴脚本 2】bilibili 视频合集标题搜索
  • 软件维护类型四大类型(IEEE 14764 标准)
  • Java基础 4.26
  • Dijkstra‘s Algorithm Implementation
  • Compose笔记(十九)--NestedScroll
  • Pygame核心概念解析:Surface、Clock与事件循环
  • 教育领域的AIGC革命:构建多模态智能教学系统
  • Dify + Mermaid 实现自然语言转图表
  • Rule.issuer(通过父路径配置loader处理器)
  • Windows怎样改变鼠标指针方案
  • 使用FME生成Delaunay三角形
  • 《淘宝API数据治理实践:采集字段标准化与数据质量监控体系》
  • 戴维斯双击选股公式如何编写?
  • Makefile---自动化构建和管理项目的文件
  • Java基础 — 循环
  • BS架构与CS架构的对比分析:了解两种架构的不同特点与应用
  • C语言函数调用与声明