向量与数组(速度)

时间:2014-02-06 19:14:34

标签: c++ arrays

我想知道哪种是最常用的。因此,我们可以使用以下代码来代替push_back()。我认为数组更快但我不确定。

 int *p;
 p = new int[5];
 for(int i=0;i<5;i++)
    *(p+i)=i;

 // realloc
 int* temp = new int[6];
 std::copy(p, p + 5, temp); 
 delete [] p;
 p = temp; 

1 个答案:

答案 0 :(得分:3)

std::vector的实现通常针对一般用途进行优化。对于任何特定情况,本机阵列将具有更好或相同的性能,但如果您事先不知道确切的使用特性,则向量通常会具有良好的性能,并且优于未经过思考的本机阵列。例如,在上面的代码中,您显式地重新分配了内存,而向量实现可能已经分配了足够的内存(例如,使向量至少有一个高速缓存行)。