HP STL

HP STL是所有其它STL实现版本的根源。它是STL之父Alexander Stepanov在惠普的Palo Alto实验室工作时,和Meng Lee共同完成的,是第一个STL的实现版本(参见1.2节)。这个STL是开放源码的,所以它允许任何人免费使用、复制、修改、发布和销售该软件和相关文档,前提是必须在所有相关文件中加入HP STL的版本信息和授权信息。现在已经很少直接使用这个版本的STL了。

P.J. Plauger STL

P. J. Plauger STL属于个人作品,由P. J. Plauger本人实现,是HP STL的一个继承版本,因此在其所有头文件中都含有HP STL的相关声明,同时还有P. J. Plauger本人的版权声明。P. J. Plauger是标准C中stdio库的早期实现者,现在是C/C++ User’s Journal的主编,与Microsoft保持着良好的关系。P. J. Plauger STL便是被用于Microsoft的Visual C++中的。在Windows平台下的同类版本中,其性能不错,但是queue组件(队列,一种容器)的效率不理想,同时由于Visual C++对C++语言标准的支持不是很好(至少直到VC6.0为止,还是如此),因此一定程度上影响了P. J. Plauger STL的性能。此外,该版本的源代码可读性较差,你可以在VC的Include子目录下找到所有源文件(比如:C:/Program Files/Microsoft Visual Studio/VC98/Include)。因为不是开放源码的(open source),所以这些源代码是不能修改和销售的,目前P.J. Plauger STL由Dinkumware公司提供相关服务,详情请见http://www.dinkumware.com。据称Visual Studio.NET中的Visual C++.NET(即VC7.0),对C++标准的支持有所提高,并且多了以哈希表(hash table)为基础而实现的map容器,multimap容器和set容器。

Rouge Wave STL

Rouge Wave STL是由Rouge Wave公司实现的,也是HP STL的一个继承版本,除了HP STL的相关声明之外,还有Rouge Wave公司的版权声明。同时,它也不是开放源码的,因此无法修改和销售。该版本被Borland C++ Builder所采用,你可以在C++ Builder的Include子目录下找到所有头文件(比如:C:/Program Files/Borland/Cbuilder5/Include)。尽管Rouge Wave STL的性能不是很好,但由于C++ Builder对C++语言标准的支持还算不错,使其表现在一定程度上得以改善。此外,其源代码的可读性较好。可以从如下网站得到更详细的情况介绍:http://www.rougewave.com。遗憾的是该版本已有一段时间没有更新且不完全符合标准。因此在Borland C++ Builder 6.0中,它的地位被另一个STL的实现版本–STLport(见后)取代了。但是考虑到与以前版本的兼容,C++ Builder 6.0还是保留了Rouge Wave STL,只是如果你想查看它的源代码的话,需要在别的目录中才能找到(比如:C:/Program Files/Borland/Cbuilder6/Include/oldstl)。

STLport

STLport最初源于俄国人Boris Fomitchev的一个开发项目,主要用于将SGI STL的基本代码移植到其他诸如C++Builder或者是Visual C++这样的主流编译器上。因为SGI STL属于开放源码,所以STLport才有权这样做。目前STLport的最新版本是4.5。可以从如下网站得到更详细的情况介绍:http://www.stlport.org,可以免费下载其源代码。STLport已经被C/C++技术委员会接受成为工业标准,且在许多平台上都支持。根据测试STLport的效率比VC中的STL要快。比Rouge Wave STL更符合标准,也更容易移植。Borland C++ Builder已经在其6.0版中加入了对STLport的支持,它使用的STLport就是4.5版的,C++ Builder 6.0同时还提供了STLport的使用说明。你可以在C++ Builder的Include/Stlport子目录下找到所有头文件(比如:C:/Program Files/Borland/Cbuilder6/Include/Stlport)。

SGI STL

SGI STL是由Silicon Graphics Computer System, Inc公司实现的,其设计者和编写者包括Alexander Stepanov和Matt Austern,同样它也是HP STL的一个继承版本。它属于开放源码,因此你可以修改和销售它。SGI STL被GCC(linux下的C++编译器)所采用,你可以在GCC的Include子目录下找到所有头文件(比如:C:/cygnus/cygwin-b20/include/g++/include)。由于GCC对C++语言标准的支持很好,SGI STL在linux平台上的性能相当出色。此外,其源代码的可读性也很好。可以从如下网站得到更详细的情况介绍:http://www.sgi.com,可以免费下载其源代码。目前的最新版本是3.3。

STL STL的不同实现版本相关推荐

  1. malloc开辟的空间在哪一个区间_C++进阶系列之STL(2)SGI版本空间配置器

    1.STL中的空间配置器在STL中,空间配置器分了2组,分别为一级空间配置器和二级空间配置器,但是它们都有自己各自运用的场合:一般说来,一级空间配置器一般分配的空间大于128B,二级空间配置器的分配空 ...

  2. STL —— STL六大组件

    注:以下内容摘自 http://blog.csdn.net/byxdaz/article/details/4633826 STL六大组件 容器(Container) 算法(Algorithm) 迭代器 ...

  3. STL——STL简介、STL六大组件

    一.STL是什么 STL(standard template library):         C++标准模板库,是C++标准库的重要组成部分,不仅是一个可复用的组件库,还是一个包罗数据结构与算法的 ...

  4. C/Cpp / STL / 各个实现版本的说明

    1994年,STL(Standard Template Library)进入了C++标准库,各个C++编译器厂商依照标准所描述的原型去实现C++ STL.主要版本如下: HP STL HP STL是 ...

  5. vector 作为dll 接口参数_DLL中传递STL参数,vector对象作为dll参数传递等问题(转)...

    STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释. 原因分析:一句话-----如果 ...

  6. 【c++】标准模板库STL入门简介与常见用法

    一.STL简介 1.什么是STL STL(Standard Template Library)标准模板库,主要由容器.迭代器.算法.函数对象.内存分配器和适配器六大部分组成.STL已是标准C++的一部 ...

  7. 《STL源码剖析》学习-- 1.9-- 可能令你困惑的C++语法2

    上一篇请见可能令你困惑的C++语法1 现在继续, 2.临时对象的产生和运用 临时对象,是一种无名对象.制造临时对象的方法是,在型别之后加一对小括号,并可以给定初值,这样就会调用响应的construct ...

  8. maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...

    三维文件格式 三维软件之间互相导入导出一般会涉及到一些格式不兼容的问题,这里就给大家普及一下这些常用的三维文件格式.不同的格式有着不同的定位及用处,有开源的也有商业的.目前很多三维软件之间互导迫在眉睫 ...

  9. DLL中传递STL参数(如Vector或者list等)会遇到的问题[转载]

    最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况.这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中 ...

  10. 疯子的算法总结(二) STL Ⅰ 算法 ( algorithm )

    写在前面: 为了能够使后续的代码具有高效简洁的特点,在这里讲一下STL,就不用自己写堆,写队列,但是做为ACMer不用学的很全面,我认为够用就好,我只写我用的比较多的. 什么是STL(STl内容): ...

最新文章

  1. ImportError: Failed to import `pydot`. Please install `pydot`. For example with `pip install pydot`
  2. 手机信号放大器 让手机信号增强的办法
  3. 网易云信携手SNH48 GROUP,打造在线追星新体验
  4. java 中格式化小数位数
  5. matlab在电力系统潮流计算程序,大神们,求个电力系统潮流计算的matlab程序。
  6. 5个界面效果很炫的JavaScript UI 框架
  7. FME实现CAD带属性转SHP数据方法
  8. 为python写了一个事件机制 - 小川 - 博客园
  9. 字节跳动 8 年,抖音、头条的技术能力开发者都可以用起来了!
  10. 记一次烧毁AO3400的过程
  11. VRRP:虚拟网关冗余技术
  12. Java后端传图片字节流到Vue前端显示
  13. 一个屌丝程序员的青春(三三)
  14. Oracle 的SQL*LOADER中optionally enclosed的作用
  15. 南柯服务器压力,性能测试中AIX服务器资源监控与瓶颈分析-2
  16. 中职升高职c语言程序设计教程课后答案,锦职业技术学院2020年单独招生计算机应用技术专业技能测试考试大纲(中职升高职)...
  17. 一个悲观主义者的积极思考——职业篇[待续2021/06/27]
  18. 获得PMP证书之后该如何获取续证PDU?
  19. 生信笔记 | 探索PubMed数据库文献
  20. OpenGL ES 高级进阶:EGL及GL线程

热门文章

  1. 基于kafka的定时消息/任务服务
  2. 为什么你的MySQL跑得很慢?
  3. Zookeeper实现简单的分布式RPC框架
  4. 设计模式学习每天一个——Bridge模式
  5. morphia查询Mongo数据库通过ReadPreference主从数据库查询切换方法
  6. /etc/mtab is not writable
  7. 分享最新十个流行的 jQuery 插件
  8. 使用boost库获取应用程序的所在目录
  9. MySQL触发器自动更新memcache[转]
  10. 2.RabbitMQ实战 --- 理解消息通信