원리: 배열은 연속된 메모리 공간을 사용하여, 인덱스를 기반으로 즉시 접근할 수 있음.
동작 방식: 배열의 시작 주소(base_address
)에 인덱스 크기만큼 오프셋을 추가하여 직접 접근.
예를 들어, 배열 arr[5]
의 주소 계산:
주소=base_address+(index×size_of_each_element)
주소=base_address+(index×size_of_each_element)\text{주소} = \text{base\_address} + (\text{index} \times \text{size\_of\_each\_element})
결과: 검색이 항상 O(1).
arr.insert(index, value)
)
arr.erase(index)
)
std::vector
)배열 기반 리스트는 배열과 동일한 검색(O(1)) 속도를 가지지만, 크기 조정 시 동적 할당과 복사가 발생할 수 있음.
push_back
): O(1) (단, 배열 크기를 초과하면 O(N) 재할당)pop_back
): O(1)