小趣闻: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的问题 (阅读:8568)
- 萃取(traits)编程技术的介绍和应用 (阅读:6084)
- 一个简单的stl中string的split函数 (阅读:4000)
- STL笔记之二叉查找树 (阅读:3803)
- STL笔记之hashtable (阅读:3224)
- 倒置字符串中的单词 (阅读:3294)
- 闲谈STL容器之size()成员函数 (阅读:3036)
- STL可能的误用-find_first_of和erase (阅读:2630)
- 不得不留意的STL string重载函数和隐式类型转换 (阅读:1940)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:Dante 来源: Vimer
- 标签: STL
- 发布时间:2009-11-26 22:17:33
-
[321] WordPress插件开发 -- 在插件使用 -
[150] 解决 nginx 反向代理网页首尾出现神秘字 -
[91] IOS安全–浅谈关于IOS加固的几种方法 -
[51] 到底什么是MVC? -
[50] Linux Used内存到底哪里去了? -
[50] 二维码的生成细节和原理 -
[48] Shell的那些事儿 -
[47] Hacker News 排名算法工作原理 -
[47] 中间件和稳定性平台 -
[47] 浏览器的工作原理:新式网络浏览器幕后揭秘
