数组性能问题

Kon*_*rad 1 c++ arrays stl

我非常熟悉STL向量(和其他容器)性能保证,但我似乎无法找到关于普通数组的具体内容.

指针算术和[]方法是常数还是线性时间?

GMa*_*ckG 9

他们是恒定的时间.(与vector.相同.)

当你说a[b],它变成了*(a + b).两个(指针运算)添加和解除引用都是恒定时间.

向指针添加整数时,会将多个元素移动到:

T* p; size_t i;

T* q = p + i; // same as:
T* q = reinterpret_cast<T*>(reinterpret_cast<char*>(p) + i * sizeof(T));
Run Code Online (Sandbox Code Playgroud)

那里的每一次操作都是恒定的时间.