【发布时间】:2010-03-10 04:39:50
【问题描述】:
一些开源库倾向于重新实现基本结构,如字符串、列表、堆栈、队列...... 他们为什么不使用 stl 库? stl还不够好吗?
【问题讨论】:
标签: c++ data-structures open-source
一些开源库倾向于重新实现基本结构,如字符串、列表、堆栈、队列...... 他们为什么不使用 stl 库? stl还不够好吗?
【问题讨论】:
标签: c++ data-structures open-source
C++ 作为一种语言在 STL 标准化之前已经存在了很多年,在 STL 在所有编译器中一致实现之前又存在了几年。在那段时间最初编写的库可能不想依赖 STL 来提高可移植性。
与可移植性相关的另一个原因是嵌入式使用。例如,Qt 重新实现了大部分 STL,因为 Qt 应用程序有时针对可能没有可用的 STL 实现的嵌入式平台(例如诺基亚智能手机)。
【讨论】:
在某些情况下,在标头中公开 STL 类型可能会导致令人讨厌的、讨厌的链接时间。在大型项目中,这可能是将它们“隐藏”在具有专有外观的 API 后面的充分理由。
【讨论】:
ctags 信息时跳过 boost 标头,因为它完全用完了记忆。
STL 实现在每个平台上都不同,因此在库中公开 STL 会有风险,例如,如果您在库中公开 std::map,由于您无法从库中导出 std::map,您的库将被强制执行使用您的库用户(加载您的库的用户)的 std::map 实现,这将导致一些不兼容,例如不同版本的 STL 实现、不同的 STL 分配器类以及一些特定于平台的问题。
【讨论】:
其中一个原因可能是 STL 容器不打算用作基类 - STL design issues Wikipedia
【讨论】: