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

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.mrgr.cn/news/100420.html

相关文章:

  • 10 DPSK原始对话记录
  • ALTER TABLE 删除DROP表列的报错: 因为有一个或多个对象访问此列
  • MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep
  • 基于云原生架构的后端微服务治理实战指南
  • 【Linux】Centos7 在 Docker 上安装 mysql8.0(最新详细教程)
  • 【C++ 类和数据抽象】消息处理示例(2)
  • SHCTF-REVERSE
  • 6.图的OJ题(1-10,未完)
  • 【Pandas】pandas DataFrame rfloordiv
  • 文心一言开发指南06——千帆大模型平台新手指南
  • 《代码整洁之道》第8章 边界 - 笔记
  • Python 自动化办公:Excel 数据处理的“秘密武器”
  • 技能点总结
  • 【MCP】从一个天气查询服务带你了解MCP
  • 软考:软件设计师考试数据结构知识点详解
  • Redis使用总结
  • linux:进程的替换
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day21
  • git回退commit
  • w~嵌入式C语言~合集4