c ++ std :: vector <> vs new []性能

Iva*_*ars 3 c++ new-operator stdvector

在固定和相同长度之间std::vector<>和之间的分配,解除分配和访问时间是否有任何重大差异new[]

Ste*_*sop 10

取决于类型和你如何称呼它.std::vector<int> v(1000000);必须达到零一百万,而new int[1000000];不是,所以我预计速度会有所不同.这是在一个地方std::vector,你可以通过的东西你不使用,如果出于某种原因,你不关心元素的初始值的鼻子支付.

如果你比较std::vector<int> v(1000000);new int[1000000]();那么我怀疑你会看到太大的区别.重要的问题是它们中的一个是否以某种方式具有更优化的循环设置零,而不是另一个.如果是这样,那么另一个的实现已经错过了一个技巧(或者更具体地说是优化器).

  • 但是`v(N)`和`new T [N]`是不具有可比性的.您需要将内存和对象分开.所以真正的比较是`std :: vector <T> v; v.reserve(N);`.如果有的话,`vector`会更好,因为*允许*你对对象和记忆保持清醒. (4认同)