【C++】浅谈STL
STL简介什么是STLSTL与C++标准库的关系STL的版本原始版本P. J版本RW版本SGI版本STL的六大容器分类STL的重要性如何学习STLSTL的缺陷什么是STLSTL(Standard Template Library)标准模板库的英文缩写,包含有计算机科学领域常用的基本数据结构和基本算法。STL与C++标准库的关系STL的版本原始版本Alexander Stepanov、Meng Le
什么是STL
STL(Standard Template Library)标准模板库的英文缩写,包含有计算机科学领域常用的基本数据结构和基本算法。
STL与C++标准库的关系
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要阅读部分源代码,主要参考的就是这个版本。
STL的六大
作用简介:
组件 | 作用 |
---|---|
容器 | 存储数据 |
配接器 | 容器转换 |
迭代器 | 遍历容器数据 |
仿函数 | ------ |
算法· | 通用算法 |
空间配置器 | 分配释放内存 |
简介:
程序 = 数据结构(容器) + 算法
迭代器是容器与算法的桥梁
容器分类
简介:
容器 | 例子 |
---|---|
顺序容器(序列容器) | vector,list,deque |
关联容器 | map,multimap,set,multiset |
容器适配器 | stack,queue,priority_queue |
还有迭代器等等这里就不一一叙述
STL的重要性如何学习STL
引用书中的话来对此进行描述
学习STL的三个境界:能用,明理,能扩展,都是不同的领域和境界,如果达到三境界基本就是人上人
笔试中
牛客OJ: 二叉树打印多行.
面试中,基本上是必考内容
如下就是牛客的面经,已经将其分到很高的比重了。
第三个,指的是在工作中
网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。
就相当于吃饭的筷子,走路的腿,写字的笔,敲字的键盘。
STL的缺陷
- STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。
- STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。
- STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
- STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)