访问数组比访问向量更快吗?

aja*_*ddy 1 c++ arrays stdvector

可能重复:
使用数组或std ::向量C++,有什么性能上的差距?
std :: vector比普通数组慢得多?

memory是1000个元素的向量array []是一个1000个元素的整数数组

for (iteration = 0; iteration < numiterations; iteration++) {
    for (j = 1; j < numints; j++) {
       memory[j] += memory[j - 1];
       //array[j] += array[j - 1];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我跑100次迭代后比较for循环的时间,相比于载体的用于访问所需的时间是非常小

为什么会这样?因为我认为两者都需要不变且几乎相同的时间..

Cha*_*via 5

由于大多数(如果不是全部)实现在内部std::vector使用T*数组,因此在[]设置优化标志时使用运算符访问向量元素和C数组元素之间应该没有任何性能差异.使用编译器的优化标志再次尝试测试.

但是,使用该std::vector<T>::at函数可能不是这种情况,因为此函数将执行边界检查.