Vector

😎·2023년 1월 15일
0

CPP

목록 보기
39/46

벡터 vector

벡터는 크기가 바뀔 수 있는 배열을 나타내는 시퀀스 컨테이너이다.

배열처럼, 벡터는 요소들을 연속적인 위치로 저장한다. 이 말은 요소들의 포인터 오프셋을 사용해서 각 요소에 접근할 수 있음을 의미한다. 하지만 배열과 다르게 벡터의 사이즈는 컨테이너에 의해 저장 공간이 자동으로 다뤄지며 동적으로 변화한다.

내부적으로, 벡터는 요소를 저장하기 위해 동적 할당을 사용한다. 새 요소가 삽입될 때 크기를 늘리기 위해 이 배열을 재할당해야 할 수 있다. 즉, 새 배열을 할당하고 모든 요소를 해당 배열로 이동하는 것을 의미한다. 이는 처리 시간 측면에서 상대적으로 비용이 많이 드는 작업이기 때문에 요소가 추가될 때마다 벡터가 재할당되지는 않는다.

대신, 벡터 컨테이너는 확장 시 저장할 수 있는 여분의 저장 공간을 할당하기 때문에 요소들을 포함하는데 필요한 저장 공간 보다 큰 용량이 있을 수 있다. 라이브러리는 메모리 사용과 재할당 사이의 균형을 맞추기 위해 다양한 전략을 구현할 수 있지만, 재할당은 일정 간격으로 발생해야 벡터 끝에 개별 요소를 삽입할 때 일정한 비용이 제공될 수 있다.

배열과 비교하여 벡터는 효율적인 방법으로 저장 공간을 관리하고 동적 할당하기 위해 더 많은 메모리를 소비한다.

다른 동적 시퀀스 컨테이너(덱, 리스트, 전위 리스트)와 비교했을 때, 벡터는 매우 효과적으로 요소에 접근하며 끝에 요소를 추가하고 삭제하는데 효과적이다. 끝 이외에 삽입하고 제거하는 경우 다른 컨테이너에 성능이 안좋으며, 리스트와 전위리스트에 비해 덜 철저한 반복자와 참조를 갖고 있다.


참고 자료

profile
jaekim

0개의 댓글