C++(STL源码):02---STL的实现版本(HP版本、P.J.Plauger版本、Rouge Wave版本、STLport版本、SGI STL版本)
分类:
文章
•
2025-01-27 18:39:46
一、HP实现版本
- HP版本是所有 STL实作版本的始祖
- 每一个HP STL 表头档都有如下一份声明, 允许任何人免费使用、拷贝、修改、传布、贩卖这份软件及其说明文件,唯一需要遵守的是,必须在所有档案中加上 HP 的版本声明和运用权限声明。这种授权并不属于GNU GPL范畴,但属于open source范畴

二、P.J.Plauger实现版本
-
P.J. Plauger版本由P.J. Plauger发展。 PJ 版本承继HP版本,所以它的每一个表头档都有 HP 的版本声明,此外还加上P.J. Plauger 的个人版权声明:

- 这个产品既不属于 open source范畴,更不是GNU GPL
-
P.J. Plauger 版本被Visual C++采用,所以可以在 Visual C++软件安装的 "include" 子目录下找到所有STL表头档,但是不能公开它或修改它或甚至贩卖它

- 由于 Visual C++ 对C++语言特性的支持不甚理想,导致PJ版本的表现也受影响
- 这项产品目前由 Dinkumware 12公司提供服务
三、Rouge Wave实现版本
-
RougeWave 版本由 Rouge Wave 公司开发。RW 版本承继HP版本,所以它的每一个表头档都有 HP 的版本声明,此外还加上Rouge Wave 的公司版权声明:
- 这份产品既不属于open source 范畴,更不是GNU GPL
-
Rouge Wave 版本被C++Builder采用,所以当然你可以在C++Builder 的 "include" 子目录下找到所有STL表头档,但是不能公开它或修改它或甚至贩卖它
- C++Builder 对 C++ 语言特性的支持相当不错,连带地给予了 RW 版本正面的影响
四、STLport实现版本
- 网络上有个 STLport 站点,提供一个以SGI STL为蓝本的高度可移植性实作版本
五、SGI STL实现版本
-
SGI 版本由Silicon Graphics Computer Systems, Inc.公司发展,承继HP版本。所以它的每一个表头档也都有 HP 的版本声明。此外还加上SGI 的公司版权声明。 从其声明可知,它属于 open source 的一员,但不属于 GNU GPL(广泛开放授 权)。

-
SGI 版本被GCC采用。你可以在 GCC 的 "include" 子目录下(例如 C:\cygnus\ cygwin-b20\include\g++)找到所有STL表头档,并获准自由公开它或修改它或甚至贩卖它
- GCC 对C++语言特性的支持相当良好,在 C++ 主流编译程序中表现耀眼,连带地给予了SGI STL 正面影响。事实上SGI STL 为了高度移植性,已经考虑了不同编译器的不同的编译能力,详见后面文章介绍的<stl_config.h>头文件
-
SGI STL也采用某些 GPL(广泛性开放授权)档案,例如<std\complext.h>、<std\complext.cc>、<std\bastring.h>、<std\bastring.cc>。这些文件都有如下的声明:
