STL 벡터 (및 기타 컨테이너) 성능 보장에 대해 잘 알고 있지만 일반 배열에 대해서는 구체적인 내용을 찾을 수 없습니다.배열 성능 질문
포인터 연산과 [] 메서드가 일정하거나 선형 시간입니까?
STL 벡터 (및 기타 컨테이너) 성능 보장에 대해 잘 알고 있지만 일반 배열에 대해서는 구체적인 내용을 찾을 수 없습니다.배열 성능 질문
포인터 연산과 [] 메서드가 일정하거나 선형 시간입니까?
일정 시간입니다. (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));
마다 일정한 동작 시간 :
포인터에 정수를 가산
은 그 위에 다수의 소자가 이동한다.포인터 계산은 상수입니다. 일반적으로 기본 곱셈과 덧셈입니다. []는 일종의 포인터 연산입니다.
벡터는 실제로 배열 주위의 래퍼이므로 동일한 성능 보장을 제공해야합니다.
어리석은 질문 - 총 작동 시간은 일정합니까? 그러면 (pObj + 1)과 (pObj + 10)는 같은 시간이 걸릴 것입니까? – Konrad
@Konrad 예 - 포인터 산술은 단지 산술입니다. 1 + 1은 1 + 10과 같은 시간이 걸립니다. –
감사합니다. 나는 그렇게 생각했지만 두뇌가 실패하는 순간을 가졌습니다. 감사! – Konrad