Это постоянное время. (То же, что и 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));
У каждой операции есть постоянное время.