分享

STL的三个版本

 Taylor 2005-10-02

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,一对你用不完的好东西,什么内存池、持久化都不在话下。
有钱还是能让他推推磨的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多