gpt4 book ai didi

c++ - 为什么 std::vector 可以比原生数组更高效?

转载 作者:行者123 更新时间:2023-11-30 01:56:16 36 4
gpt4 key购买 nike

在 Java 和 C++ 的性能比较中,我们的教授声称,选择原生数组(动态数组,如 int * a = new int[NUM] )优于 std::vector 。她也声称,优化后的 vector 可以更快,但没有告诉我们原因。 vector 背后的魔力是什么?

请只回答性能问题,这不是一般性投票!

最佳答案

任何具有较低级别内容(如原始数组)的 super 优化代码都可以击败或追平 std::vector 的性能。但是,使用 vector 的好处远远超过从低级代码获得的任何小的性能提升。

  1. vector 管理它自己的内存,array 你必须记住管理内存
  2. vector 允许您更轻松地使用 stdlib(使用动态数组,您必须自己跟踪结束指针),这些代码都写得很好,经过了良好的测试
  3. 有时 vector 甚至可以更快,比如 qsort v std::sort,阅读此 article ,请记住发生这种情况的原因是因为编写更高级别的代码通常可以让您更好地推理手头的问题。
  4. 由于 std 容器适用于动态数组不涵盖的所有其他内容,因此保持代码风格一致可使其更具可读性且不易出错。

我要记住的一件事是,您不应该将动态数组与 std::vector 进行比较,它们是两种不同的东西。它应该与类似 std::dynarray 的东西进行比较不幸的是,它可能不会进入 c++14(boost prolly 有一个,而且我确信周围有引用实现)。 std::dynarray 实现不太可能与原生数组有任何性能差异。

关于c++ - 为什么 std::vector 可以比原生数组更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19917679/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com