【发布时间】:2019-09-25 19:00:07
【问题描述】:
我正在一个项目中使用向量,因为数组的大小最初是未知的。使用数组而不是向量是否会减少代码的运行时间?如果是,那么我如何初始化/声明未知大小的数组,即数组的大小是可变的(基于输入)? "OR" 只使用向量更好吗?
注意:- 我想知道哪个更好地减少程序的执行时间。
【问题讨论】:
-
你指的是
std::array吗?请提供一些更详细的信息,最好是一个小的代码示例。 -
std::vector是正确的锤子,如果在编译时未知数组的大小是钉子。std::vector像数组一样连续存储内容。只要在运行时知道大小,就可以使用std::vector::resize()或std::vector::reserve()防止重新分配。恕我直言,您的担心是不必要的。 -
@skratchi.at 我指的是通常的数组,比如我们在 C 中使用的数组。如果它减少了程序的运行时间,一切都很好
-
有很多答案。我看了一眼投票数最高的四个。其中一位提到了我上面所说的。请注意关于“微优化器”的内容 - 恕我直言,非常值得考虑(好的 - 它反映了我自己的观点。);-)
-
关于访问,
std::vector应该与std::array竞争,因为std::vector::operator[]()只是一个“薄包装”。 (可以像数组一样用于读写访问。)在调试模式下,它还支持范围检查(数组通常不支持),这是非常有价值的。唯一的额外成本是分配,但分配带有new[]的动态数组也会有它。
标签: c++ visual-studio runtime