[C++] C++中 STL 简介

目录

1、什么是STL

2、STL的版本分类

2.1、原始版本

2.2、P. J. 版本

2.3、RW版本

2.4、SGI版本

3、STL的六大组件

4、STL的缺陷


1、什么是STL

    STL( standard template libaray-标准模板库  ) :不是C++的标准库, 而是 C++ 标准库的重要组成部分 ,C++标准库包括:I/O流,文件流,字符流等等,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架、

2、STL的版本分类

2.1、原始版本

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

2.2、P. J. 版本

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

2.3、RW版本

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

2.4、SGI版本

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

3、STL的六大组件

[C++] C++中 STL 简介_第1张图片

    容器可以理解为数据结构,配接器也是数据结构,但是和普通的数据结构不同,不是直接实现的数据结构,而是转换出来的数据结构,具体在后面进行阐述,像:数据结构栈 Stack ,数据结构队列 Queue,都属于配接器、

4、STL的缺陷

1、STL库的更新速度比较慢、
2、STL现在都没有支持线程安全,并发环境下需要我们自己加锁,且锁的粒度是比较大的、
3、STL极度的追求效率,导致内部比较复杂,比如类型萃取,迭代器萃取、
4、STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的、

你可能感兴趣的:(c++,开发语言)