C++STL简介

在这里插入图片描述

在这里插入图片描述

C++STL简介

在这里插入图片描述

1、什么是STL?

在这里插入图片描述

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

2、STL的版本

原始版本:

在这里插入图片描述

Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。HP 版本——所有STL实现版本的始祖。

附:
开源——例如STL、Linux、Git…
闭源——例如IOS、windows…

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的六大组件

在这里插入图片描述

在这里插入图片描述

4、STL的重要性

“积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。”

在这里插入图片描述

在这里插入图片描述

STL容器作为C++的灵魂之处,是我们学习这门编程语言必须爬过的高山,其重要性不言而喻!俗话说的好:“不懂STL,不要说你会C++。” STL在C++中的诞生凝聚了许多大佬们的智慧,是C++中不可多得的优秀作品,有了它的存在,许多底层的数据结构以及算法都不需要自己重新造轮子,直接就可以开着跑车跑。吾辈们能有今天有幸地站在前人的肩膀上,健步如飞的快速前行,离不开前辈们的无私奉献。常言道:“吃水不忘挖井人。” 在这里由衷地感谢前辈们的无私奉献。

在这里插入图片描述

“十年树木,百年树人。” 要想在编程这条道路上持续发光发热、越走越远,那么远不能止步于单单C++中的STL这里,“路漫漫其修远兮,吾将上下而求索。” 未来的编程道路还很长,吾辈们共勉,一起加油,共同进步!

在这里插入图片描述

5、如何学习STL

“不要担心犯错误,最大的错误是自己没有实践的经验。” 你编程技术的进步一定是基于在你改的一次又一次bug中提升的。不要只做只会“纸上谈兵”的赵括,现在学习编程的途径实在是太多了,随着互联网的高速普及,基本上人人都能上网获取相关资源。B站或者百度网盘等等一系列的学习软件都能帮助你学习编程,实际上很多的资源都是可以白嫖到的(懂得都懂)。

在这里插入图片描述

所以说呢,缺的并不是学习的资源,而是你自律动手学习的态度,心态放平,什么时候学习都不迟,一切都还来得及。

在这里插入图片描述

相关大佬的书籍推荐

我个人于1998年开始潜心研究泛型技术和STL,本书英文版《The C++ Standard Library》甫一出版便成为我学习 C++ 标准程序库的最重要案头工具书之一。小有心得之后,我写过数遍相关技术文章,从来离不开本书的影响和帮助。我曾经把STL(代表泛型技术目前最被广泛运用的一个成熟产品,也是C++标准程序库的绝大成分)的学习比喻为三个境界(或层次):

第一境界:熟用STL

在这里插入图片描述

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

在这里插入图片描述

第三境界:扩充STL

在这里插入图片描述

不论哪一个阶段,你都能够从本书获得不同程度的帮助。

简单总结一下:学习STL的三个境界:能用、能理、能扩展。

在这里插入图片描述

6、STL的缺陷

在这里插入图片描述

① STL库的更新太慢了。这个被吐槽的最为严重,上一版靠谱的是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。

在这里插入图片描述

② STL到现在都没有支持线程安全。这就意味着在并发的环境下需要我们自己加锁。且锁的粒度是比较大的。

在这里插入图片描述

③ STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。

在这里插入图片描述

④ STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

在这里插入图片描述

备注:

C++STL简介讲解就此完结,楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!

在这里插入图片描述

2023年3月22日

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曜摆摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值