【问题标题】:Should I learn to use the C++ STL containers instead of building them? [closed]我应该学习使用 C++ STL 容器而不是构建它们吗? [关闭]
【发布时间】:2015-12-29 03:25:20
【问题描述】:

我在大学课程中学习了数据结构和算法,他们教我们如何实现它们。在阅读了一些关于 SO 和 Quora 的答案后,似乎建议使用 STL 容器。

【问题讨论】:

  • 使用搜索,你会发现大量的戏剧、圣战、无关的讨论。例如:To STL or !STL, that is the question。但是,这些都不会以任何方式帮助您。相反,请注意C++ Standard Library is not STL ;)
  • 哦,我明白了...从您的链接中,说 C++ stdlib 是正确的吗?
  • @Fhibli:C++ 标准本身反复使用术语“标准库”,但在其他地方看到它大写“C++ 标准库”的情况并不少见。 “stdlib”从未在标准中使用,并且很容易与 stdlib.h 混淆 - C 标准库头文件。

标签: c++ stl


【解决方案1】:

作为一名软件工程师/开发人员,您应该了解特定数据结构在幕后的工作原理。并且您应该能够在需要时自定义/发明一个。这就是他们这么认为的原因。

但通常您不需要重新发明轮子。因此,当有可用的经过试验和测试的数据结构时,例如std::stack,就没有必要再做一次了。特别是因为与 STL 或任何其他设计良好的方案(如 Boost)相比,您的实现中会遇到更多的错误问题。

【讨论】:

    【解决方案2】:

    除非你认为你比 STL 的设计者更了解软件工程 - 或者你有一些他们不知道的非常具体的硬件要求

    【讨论】:

    • “比 STL 的设计者更了解软件工程” - 这不是非黑即白 - 标准库(以及它所基于的 STL)做出了某些设计决策这不太适合每个目的。例如,在不同的情况下,开放式寻址/封闭式散列表可能在速度和减少内存使用方面都比标准库的无序容器要好得多。不过,首先尝试标准库版本是合理的建议 - 如果您要实现自己的标准 API,那么获得标准 API 的经验是很有用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    相关资源
    最近更新 更多