赞
踩
STL(英文全称:standard template libaray ,即标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,同时也是一个包罗数据结构与算法的软件框架。
原始版本:
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要阅读部分源代码,主要参考的就是这个版本。
“积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。”
STL容器作为C++的灵魂之处,是我们学习这门编程语言必须爬过的高山,其重要性不言而喻!俗话说的好:“不懂STL,不要说你会C++。” STL在C++中的诞生凝聚了许多大佬们的智慧,是C++中不可多得的优秀作品,有了它的存在,许多底层的数据结构以及算法都不需要自己重新造轮子,直接就可以开着跑车跑。吾辈们能有今天有幸地站在前人的肩膀上,健步如飞的快速前行,离不开前辈们的无私奉献。常言道:“吃水不忘挖井人。” 在这里由衷地感谢前辈们的无私奉献。
“十年树木,百年树人。” 要想在编程这条道路上持续发光发热、越走越远,那么远不能止步于单单C++中的STL这里,“路漫漫其修远兮,吾将上下而求索。” 未来的编程道路还很长,吾辈们共勉,一起加油,共同进步!
“不要担心犯错误,最大的错误是自己没有实践的经验。” 你编程技术的进步一定是基于在你改的一次又一次bug中提升的。不要只做只会“纸上谈兵”的赵括,现在学习编程的途径实在是太多了,随着互联网的高速普及,基本上人人都能上网获取相关资源。B站或者百度网盘等等一系列的学习软件都能帮助你学习编程,实际上很多的资源都是可以白嫖到的(懂得都懂)。
所以说呢,缺的并不是学习的资源,而是你自律动手学习的态度,心态放平,什么时候学习都不迟,一切都还来得及。
相关大佬的书籍推荐
我个人于1998年开始潜心研究泛型技术和STL,本书英文版《The C++ Standard Library》甫一出版便成为我学习 C++ 标准程序库的最重要案头工具书之一。小有心得之后,我写过数遍相关技术文章,从来离不开本书的影响和帮助。我曾经把STL(代表泛型技术目前最被广泛运用的一个成熟产品,也是C++标准程序库的绝大成分)的学习比喻为三个境界(或层次):
第一境界:熟用STL
第二境界:了解泛型技术的内涵于STL的学理乃至实作
第三境界:扩充STL
不论哪一个阶段,你都能够从本书获得不同程度的帮助。
简单总结一下:学习STL的三个境界:能用、能理、能扩展。
① STL库的更新太慢了。这个被吐槽的最为严重,上一版靠谱的是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。
② STL到现在都没有支持线程安全。这就意味着在并发的环境下需要我们自己加锁。且锁的粒度是比较大的。
③ STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
④ STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。
C++STL简介讲解就此完结,楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!
2023年3月22日
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。