c++ - vector 与数组(速度)

标签 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; 

最佳答案

std::vector 的实现通常针对一般用途进行了优化。对于任何特定情况, native 数组的性能会更好或相等,但如果您事先不知道确切的使用特征, vector 通常会表现不错,并且比没有考虑过的 native 数组更好.例如,在上面的代码中,您明确地重新分配了内存,而 vector 实现可能已经分配了足够的内存(例如,使 vector 至少有一个缓存行)。

关于c++ - vector 与数组(速度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611915/

相关文章:

c++ - CreateBuffer 抛出 "Access violation reading location"

c++ - weak_ptr 是如何工作的?

c++ - 用于 MS VC++ 的 gcc-xml 等效/源解析工具

C++(不是 C++11)在非常大的方法中释放数组的最佳方式

c - C 中的负数组索引

c++ - 我想复制 (wchar_t *)buffer 中的数据,但我无法这样做,因为还有其他不兼容的类型,类型转换但没有得到结果?

c++ - std::map 具有不同参数的成员函数

c - 如何将二维数组乘以c中的数字

arrays - 使用 JSON 对 Swift 数组进行排序

Java BufferedReader 到字符串数组