C++STL简介

1.STL简介

1.1.STL的概念

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

1.2.STL的版本

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

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

  3. RW版本:由Rouge Wage公司开发,继承自HP版本,被C++ Builder采用,不能公开或修改,可读性一般(该编译器后来被微软的VS打败,已经没落)。

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

2.STL的六大组件

STL可以划分为六个组件:

STL组成
空间配置器
容器
配接器
迭代器
算法
仿函数

补充:“容器”实际上就是“数据结构”。

3.STL的学习境界

  1. 能熟用STL语法

  2. 明白STL的底层原理

  3. 能够根据需求来自主拓展、扩充STL

4.STL的缺陷

  1. 更新速度:这里值得吐槽的是STL的更新速度,比较靠谱的上一版本是C++98C++03是一些基本修订,13年后C++11才推出,STL才得以进一步更新。

  2. 线程安全:STL到现在都没有支持线程安全,并发环境下需要自己加锁,而且锁的粒度比较大。

  3. 过于效率:STL太追求效率了,导致内部比较复杂,例如:类型萃取、迭代器萃取等。

  4. 代码膨胀:STL的使用会有代码膨胀的问题,这是模板语法本身导致的。

你可能感兴趣的:(C++学习笔记,c++,开发语言)