小趣闻:STL的三个版本
STL比较出名的有如下三个:
一个是SGI STL。STL之父离开HP之后就去了SGI(当然不是去搞侏罗纪公园),然后和Matt Austern这些STL大牛一起搞了SGI STL。SGI STL技术比较新,很规范(但是代码读起来未必好懂) 像concept checking这些技术用的不少,boost graph library的想法也是在这其中产生的。后来有人觉得sgi stl很好,兼容性不够(其实现在已经很不错了),就弄了个stlport项目,顺便提供咨询服务赚点小钱。
一个是RougeWave STL,是Borland C++ Builder 5.0及以前版本采用的STL实现(6.0以后改用stlport)。RougeWave公司在C++程序库领域应该说是鼎鼎大名,在C++标准化过程中出力甚多(比如IOStream)。不过这个STL版本似乎老了点,更新不太勤快,关键是贵(RougeWave 的东西一向如此),所以被Borland一脚踢了。
一个是Visual C++里的STL,作者P.J. Plauger,所以一般也说pj stl。其实这份STL是他公司的产品(他这个公司一共也就3个人,所以人均GDP一定很高),不过他跟MS的关系实在是好得有点古怪,所以虽然Plauger水平极高,很多人却看他不惯。当然,据说Plauger除了钱以外也看不惯其他东西,所以Plauger虽然称不上声名狼藉,也没有什么好名声。因为VC 6.0在模板处理方面过于白痴(7.0/7.1以后就没事了,毕竟Lippman出马),所以pj stl实在写得辛苦,也难为Plauger了(当然有money作动力,恐怕也无所谓“难为”)。
三份STL,sgi stl应该说是中规中矩,rougewave没 什么好印象,pj stl效率好。说到符合标准的程度,都不怎么样。sgi stl 的allocator是比较特别的,另外在windows下的stlport对wchar_t和locale这些支持极烂。rougewave stl和pj stl对wchar_t支持还行,但是locale支持部分偶尔有些小bug,乱跳异常。 sgi stl和pj stl都实现了hash这些非标准组件(反正肯定会是标准的),但是接口不同。据说标准委员会更偏向pj stl的。另外sgi stl是彻底的free,但是pj stl不是。如果你跟Plauger多些money,他会给你几百个allocator,一堆你用不完的好东西,什么内存池、持久化都不在话下。有钱还是能让他推推磨的。
建议继续学习:
- 关于使用STL的红黑树map还是hashmap的问题 (阅读:7984)
- 萃取(traits)编程技术的介绍和应用 (阅读:5078)
- 一个简单的stl中string的split函数 (阅读:3276)
- STL笔记之二叉查找树 (阅读:3115)
- STL笔记之hashtable (阅读:2699)
- 倒置字符串中的单词 (阅读:2487)
- 闲谈STL容器之size()成员函数 (阅读:2376)
- STL可能的误用-find_first_of和erase (阅读:2042)
- 不得不留意的STL string重载函数和隐式类型转换 (阅读:1400)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Dante 来源: Vimer
- 标签: STL
- 发布时间:2009-11-26 22:17:33
- [69] Twitter/微博客的学习摘要
- [67] IOS安全–浅谈关于IOS加固的几种方法
- [65] 如何拿下简短的域名
- [65] android 开发入门
- [63] find命令的一点注意事项
- [62] Go Reflect 性能
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [57] 读书笔记-壹百度:百度十年千倍的29条法则