이 글에서는 C/C++에서 벡터(vector)가 어떻게 작동하는지 예제 코드와 함께 자세히 알아보겠습니다.
벡터란 무엇인가?
벡터는 표준 배열을 개선한 동적 배열(dynamic array) 자료구조입니다. 일반 배열은 선언 시점에 크기가 고정되어 이후에 변경할 수 없지만, 벡터는 사용자의 필요에 따라 크기를 손쉽게 늘리거나 줄일 수 있습니다.
이러한 유연성 덕분에 기존 배열에서 새 배열로 요소를 일일이 복사해야 하는 번거로움과 시간 낭비를 크게 줄일 수 있습니다.
배열과 벡터의 주요 차이점
- 크기 조절: 배열은 고정 크기, 벡터는 실행 중 동적으로 크기 변경 가능
- 메모리 관리: 벡터는 요소 추가 시 필요하면 내부적으로 더 큰 메모리 공간을 자동으로 할당하고 기존 요소를 복사
- 편의성: push_back(), pop_back() 등 다양한 멤버 함수로 요소를 쉽게 삽입·삭제할 수 있음
벡터의 내부 동작 원리
벡터는 내부적으로 연속된 메모리 블록을 사용합니다. 요소를 추가할 때 현재 할당된 용량(capacity)이 가득 차면, 더 큰 새 메모리 블록을 할당한 뒤 기존 요소들을 모두 복사하고 이전 메모리를 해제합니다. 이 과정은 자동으로 처리되므로 개발자는 크기 걱정 없이 벡터를 사용할 수 있습니다.
예제 코드
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> myvector{ 1, 2, 3, 5 };
myvector.push_back(8);
// 이제 벡터는 1, 2, 3, 5, 8이 됨
for (auto x : myvector)
cout << x << " ";
}
실행 결과
1 2 3 5 8
코드 설명
위 예제에서는 처음에 4개의 요소(1, 2, 3, 5)로 벡터를 초기화한 후, push_back() 함수를 사용해 새로운 요소 8을 끝에 추가했습니다. 벡터는 크기가 자동으로 확장되므로 별도의 재할당 작업 없이 요소가 정상적으로 추가된 것을 확인할 수 있습니다. 마지막에는 범위 기반 for문(range-based for loop)을 통해 모든 요소를 순서대로 출력합니다.