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


一、什么是STL

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


二、STL的版本

1. 原始版本

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

2. P. J. 版本

由P. J. Plauger开发继承自HP版本,被Windows Visual C++采用,不能公开或修改缺陷:可读性比较低,符号命名比较怪异。

3. RW版本

由Rouge Wage公司开发继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。

★ 4. SGI版本

由Silicon Graphics Computer Systems,Inc公司开发继承自HP版 本。被 GCC(Linux) 采用可移植性好,可公开、修改甚至贩卖,从命名风格编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,要参考就是这个版本。


三、STL的六大组件

在这里插入图片描述


四、STL的重要性

  1. 笔试
    二叉数层序打印
    重建二叉树
    两个栈实现一个队列

  2. 面试

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


五、如何学习STL

在这里插入图片描述


六、STL的缺陷

  1. STL库的更新太慢了。 这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新
  2. STL现在都没有支持线程安全并发环境需要我们自己加锁。且锁的粒度是比较大的。
  3. STL极度的追求效率,导致内部比较复杂 比如类型萃取,迭代器萃取。
  4. STL的使用会有代码膨胀问题比如 使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

原文地址:https://blog.csdn.net/NiNi_suanfa/article/details/134588001

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42112.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注