|
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的某个版本修改而来,感觉学习价值>实用价值。这个是商业库,我从来没有看到过,我更没有编译过,甚至也没有编译成功过。 |
|