【问题标题】:Should one use built in classes? [closed]应该使用内置类吗? [关闭]
【发布时间】:2011-10-08 09:54:52
【问题描述】:

我已经开始编写 C++,我想开始编写有用的东西。

我知道对于字符串,可以使用std::stringchar-arrays。也可以使用std::vectors,而不是数组。

应该怎么做?重新发明轮子,还是使用内置实用程序?

问题的重点是找出人们实际在做什么。人们经常使用 STL 还是使用 char[] 而不是 std::string

【问题讨论】:

  • "重新发明轮子,还是使用内置实用程序?"猜一猜。
  • 您是自己组装汽车的车轮,还是从商店购买现成的?如果你没有从字面上重新发明轮子,你为什么要隐喻地考虑它?
  • @littleadv:这不是一个很好的类比。除非他自己造车。
  • 当然你应该重新发明轮子,我们需要另一个方形的!说真的:自己实现一些东西以了解内部发生的事情会有所帮助,但在生产中这只会引入更多错误。所以使用实用程序!它们不是您不能触摸的展品。

标签: c++ stl


【解决方案1】:

重新发明轮子可以作为一项培训任务,但如果您想编写有用的东西 - 当然可以使用标准库(“内置实用程序”)。

标准库(以及boost 和其他库)经过验证和优化,它可以让您更轻松地编写有用的东西,因此您可以专注于您的逻辑而不是重新发明轮子。

【讨论】:

  • 是和不是。看看它们是如何实现的,有很多东西可以学习,但是你自己的字符串实现可能会有很多缺陷,即使它看起来有效(异常安全?自赋值安全?)......当然那可能会教你基础知识,但重新发明轮子是没有意义的。
【解决方案2】:

除非有其他原因(例如 STL 在平台上不可用),否则请始终使用标准库(STL、Boost 等)。这些库的正确性和性能都经过时间测试

【讨论】:

  • “STL”是不合时宜的。 C++ 标准库包含大多数人们所说的 STL,它是语言的一部分,因此可用于所有兼容的 C++ 实现。
【解决方案3】:

使用内置实用程序。它们经过优化,将确保您的代码完全可移植!

请注意,您应该巧妙地使用它们:如果您在使用它们之前保留空间等,可以更快地渲染矢量。

【讨论】:

    【解决方案4】:

    如果您的目标是编写有用且稳定的软件,请使用标准库。

    如果您的目标是探索特定主题,例如字符串,那么重新发明字符串类并从错误中吸取教训。

    【讨论】:

    • 哇,谢谢你给我一个很好的答案。
    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多