目录
- 什么是STL
- STL的版本
- STL的六大组件
- STL的重要性
- 如何学习STL
- STL的缺陷
1. 什么是STL
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)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格看,阅读性非常高,后面部分主要是这个版本
3. STL的六大组件
4. STL的重要性
如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。
5. 如何学习STL
《The C++ Standard Library》
分为三个境界
- 第一境界: 熟用STL
- 第二境界:了解泛型技术内涵与STL的学理乃至实作
- 第三境界:扩充STL
6. STL的缺陷
1.STL库更新太慢,上一个靠谱版本是98,c++03才一些修订,c++11出来已经隔了13年
2.STL没有支持线程安全。并发环境下需要自己加锁,且难度较大
3.极度追求效率,导致内部比较复杂,比如类型萃取,迭代器萃取
4.STL的使用会有代码膨胀的问题,比如用vector/vector这样会生成多份代码,当然这是模板语法本身导致