找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6268|回复: 2

standard template library实现一览

[复制链接]
发表于 2009-7-7 22:00:54 | 显示全部楼层 |阅读模式
1、stlport
也是第三方标准库中最出名的一个,要是你想追求一些效率,我认为可以试试icc+stlport,有可能会有些意外的惊喜。
在vc6里会经常用到(很多情况下是因为vc6自带的没有hash_map,hash_set,而这两个非常有用)。
比起vc增加的一些内容:
rope库:string的另外一个实现,有像replace这样比较方便的函数
slist库:单向链表
hash_map,hash_set:这个现在vc也有了,不能算优点了,使用起来有所不同。
其他的内存分配器(其实vc也有,只是你得自己写或者去买):__pthread_alloc,__node_alloc可能可以测试比较一下具体的性能。
地址:http://stlport.sourceforge.net/Home.shtml
这个的string是非引用计数的。

2、stdcxx
apache的一个子项目:
http://stdcxx.apache.org/
这个项目有点像停滞不前了,主要可能有这些亮点:
A、不依赖于操作系统的locale
B、高效率(他自己说的),小的执行文件
C、引用计数的string并且可以转换。

3、UClibC++
这是专门设计嵌入式中用的(相对应uclibc吧)
应该说非常好裁剪,更小的bootprint之类的,嵌入式爱好者可以看看
实现比较简单,比如string好像就是用std::vector<char>来实现的。
http://cxx.uclibc.org/

4、sgi的stl
http://www.sgi.com/tech/stl/
这个不用太多说了。

5、libstdc++
http://gcc.gnu.org/libstdc++/
这是缺省的gcc都有的,也是绝大部分linux下使用的c++标准库。
引用计数的string,支持tr1
这个的文档非常不错,写了很多东东,有空可以多读读,比如说:他的list::size() is O(n),

6、roguewave的stl,
以前bcb里面缺省就是这个,但似乎效率不佳,现在用的人估计极少。我没有发言权。
http://www2.roguewave.com/support/docs/sourcepro/edition9-update1/html/stdlibref/index.html

7、dinkumware的stl实现
http://www.dinkumware.com/
这个是我们用得最多的,vc缺省用的就是这个,vc2005的那个memoryleakbug也是这里面的,也是很多初学者喜欢不屑一顾的库。(他们总认为有些第三方的更好,更快,然后等他们真正用起来的时候又发现不是那么回事,有的问题自己也不知道什么问题)
P. J. Plauger是标准C中stdio库的早期实现者,实现的stl也非常中规中矩,当然也是比较难读。
已实现了tr1
他的网站还出售其他的一些库:
http://www.dinkumware.com/supplemental.aspx
Code Conversions. (好像是转码吧)
Allocators:内存分配器(应该会比自带的要强,因为那个是免费的,如果有人买过的话,能否借大家看看)
Threads:线程库,1000个演员有1000个哈母来特,1000个C++程序员也起码有500个thread库。


8、HP Stl
经常在stl头文件头部看到hp的字样,真正关心的人估计不多。
http://apotheca.hpl.hp.com/ftp/stl/stl.zip

9、win驱动中的stl
compuware(boundcheck的公司)曾经做过一个版本,可以在win的驱动中使用stl,但编译起来比较麻烦,用的似乎是stlport的某个版本修改而来,感觉学习价值>实用价值。这个是商业库,我从来没有看到过,我更没有编译过,甚至也没有编译成功过。
发表于 2009-11-21 15:55:29 | 显示全部楼层

嗯,不错,总结的好

一般还是使用开发工具提供的STL比较合理,否则会遇到比较特殊的麻烦。呵呵。
发表于 2010-6-15 05:06:49 | 显示全部楼层
stl 曾经是最好的,从sgi发展来的,老的版本很稳定,(4.2以前)
新的好像不太稳定。
现在,gnu的也在进步,以前的很垃圾。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-4 00:55 , Processed in 0.018486 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表