c++ stl

143 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第N天,点击查看活动详情 录 💨1. 什么是STL 💨2. STL的版本 💨3. STL的六大组件 💨4. STL的重要性 💨5. 如何学习STL 💨6.STL的缺陷 💨1. 什么是STL 💤STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

💨2. STL的版本 💤原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。 💤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++ 中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

💨5. 如何学习STL

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

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

一起去看日落吗 已关注

19

18

29

专栏目录 C++ STL标准模板库-优秀的C++标准库 08-23 STL是Standard Template Library的简称,中文名标准模板库,是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室开发的 ,是一个具有工业强度的,高效的C++库,STL早已是ANSI/ISO C++标准中的一部分。STL库由于其对跨平台,对标准C++的支持,开源,高效等优点,如今已经被广泛运用于企业级开发。 STL标准模板库 m0_63203388的博客 2230 软件界一直一种需要可重复利用的东西,C++的泛型编程和面向对象都是为了提高重复率。因此为了建立一种数据结构和算法的统一标准,于是就有了STL. (一)STL的基本概念: 1.STL从广义上可以分为容器,算法,迭代器 2.容器和算法之间通过迭代器进行无缝连接 3.STL几乎所有的代码都采用了模板类型或者模板函数 (二)STL六大组件:容器 算法 迭代器 仿函数(重载的小括号也就是行为类似函数) 配置器(修饰容器或者仿函数或者迭代器接口的东西)空间配置器(负责空间的配置和管理) 容器:放数据。运用. 评论29条写评论 YZL40514131 热评 写得很详细 看完受益匪浅 STL(标准模板库) m0_60274660的博客 2769 概念: STL:标准模板库,是C++标准库的重要组成部分 由概念便可以知道,STL中的所有数据结构都是以模板的方式创建的 LIST--container: list节点: list节点是一个双向指针,实质是一个模板结构体 template struct _list_node { typedef void* void_pointer; void_pointer prev;//previous void_pointer next; C++:初识STL An