为什么有些库必须实现基本数据结构?

时间:2010-03-10 04:39:50

标签: c++ data-structures open-source

一些开源库倾向于重新实现基本结构,如字符串,列表,堆栈,队列...... 他们为什么不使用stl库?是不是还不够好?

4 个答案:

答案 0 :(得分:12)

C ++作为一种语言在STL标准化之前存在多年,并且在STL在所有编译器中一致实施之前还有几年。最初在此期间编写的库可能不想依赖STL以便更便携。

与便携性相关的另一个原因是嵌入式使用。例如,Qt重新实现了大部分STL,因为Qt应用程序有时会针对可能没有STL实现的嵌入式平台(例如诺基亚智能手机)。

答案 1 :(得分:4)

在某些情况下,在标题中公开STL类型会导致令人讨厌的恶劣链接时间。在大型项目中,这可能是将其“隐藏”在具有专有性的API背后的充分理由。

答案 2 :(得分:4)

STL实现在每个平台上都有所不同,因此在库中暴露STL会有风险,例如,如果您在库中公开std :: map,因为您无法从库中导出std :: map,您的库将被强制使用来自库用户(加载lib的用户)的std :: map实现,这将导致一些不兼容性,例如不同版本的STL实现,不同的STL分配器类以及一些特定于平台的问题。

答案 3 :(得分:0)

  1. 其中一个原因可能是 STL容器不能用作基类 - STL design issues Wikipedia

  2. To STL or NOT STL that is the question - SO