为什么使用 QVector(Qt) 而不是 std::vector

新手上路,请多包涵

我对 C++ 和 Qt 很陌生,但我非常擅长 C#/Java。

关键是我喜欢跨平台,但我对 Qt 感到困惑。 std::vector 不是已经是跨平台的吗,Qt 不提供与非跨平台的东西等效的东西吗?

还有 FileQFile 有何不同?

一个链接会很好,谢谢:)

原文由 Athiwat Chunlakhan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.6k
2 个回答

这篇文章看起来不错。它将 Qt 模板库与标准模板库进行了比较:

希望您会发现看到文章中列出的所有差异会很有趣。

编辑:

以下是我觉得有趣的地方:

我认为 QTL 的最大优势在于它在 Qt 支持的所有操作系统上具有相同的实现(包括二进制兼容性) 。一些 STL 实现在性能方面可能低于标准,或者它们可能缺少功能。有些平台甚至没有 STL!另一方面,STL 更具可定制性,并且可以在头文件中完整使用…… 就像我说的那样,没有明确的赢家

就像他说的,没有明显的赢家。但是仍然阅读这篇文章可以使很多事情变得清晰。知道其中的区别总比不知道另一个更好。

原文由 Nawaz 发布,翻译遵循 CC BY-SA 3.0 许可协议

由于没有答案提及,Qt 容器,包括 QVector 通常具有更完整的 API,与 std::vector 相比,它确实提供了一定程度的额外便利并减少了冗长。

QVector 并未真正集成到 Qt API 中,该角色由 QList ,因此对于整体而言,使用 QVector 并不是一个强有力的论据与 Qt API 更好的兼容性。请注意,这可能会在 Qt 6 中改变,因为 QList 的缺点越来越被认可。

话虽如此,如果您的应用程序已经依赖 Qt,那么为了方便起见,使用 QVector 会很有意义。我认为没有人会为一两个容器添加像 Qt 这样臃肿的依赖项。 QVector 高效且性能稳定,在 Qt 支持的任何平台上都可以正常运行。

另一方面,如果你想创建一个与框架无关的核心逻辑 API,如果可能的话,最好用标准 C++ 开发它,这样你就可以得到一些不依赖于特定 GUI 框架的可移植的东西,所以如果需要,您可以在将来轻松地将其迁移到另一个。

原文由 dtech 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题