我想知道哪种是最常用的。因此,我们可以使用以下代码来代替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;
答案 0 :(得分:3)
std::vector
的实现通常针对一般用途进行优化。对于任何特定情况,本机阵列将具有更好或相同的性能,但如果您事先不知道确切的使用特性,则向量通常会具有良好的性能,并且优于未经过思考的本机阵列。例如,在上面的代码中,您显式地重新分配了内存,而向量实现可能已经分配了足够的内存(例如,使向量至少有一个高速缓存行)。