我对使用gcc或Visual Studio打包的STL实现感到好奇,因此快速的Google搜索结果显示了一些结果,例如:
在什么情况下应该使用替代标准模板库?
例如,Apache的页面有一个列表,其中包括"完全符合C++标准"和"针对快速编译和极小的可执行文件大小进行了优化"等项目.如果它太好了,为什么不能取代libstdc ++?
Lea*_*elo 13
我从来没有使用过编译器以外的STL版本.但是我想到了一些观点.
basic_string
基于COW(写时复制)的实现,并且您的编译器附带的STL版本不提供.hash_map
(以及相关的)从Dinkumware的版本(它随Visual Studio中)有从显著不同的设计hash_map
,从(以及相关的)STLPort的.Len*_*ate 10
我有时使用STLPort而不是Visual Studio附带的STL.当支持VC6时,它附带的STL是错误的,所以使用STLPort(或其他STL)很有意义(特别是如果你正在构建多线程代码).
现在通常更多的是关于性能(大小或速度).例如,VS2008附带的STL在多线程情况下并不友好,因为它使用区域设置对象锁定,导致您不希望跨线程同步的事情.(请参阅此处将数字转换为C++中具有指定长度的字符串,以获取此示例的详细信息).
我从来没有需要使用替代的 STL,但我可以设想一些可能有用的场景,例如,如果您因为正在为嵌入式平台进行开发而需要小型可执行文件,则可以使用 Apache 版本。
另一个原因可能是使用 STL 版本来保证标准不一定保证的某些事情。例如,确保您拥有非 COW 字符串,以便您可以编写线程安全代码。