3.1 배열과 vector

배열은 같은 종류의 자료를 연속적인 메모리에 보관하는 자료구조예요. C언어와 C++언어에서 제공하는 배열 형식은 개발 단계에서 원소 형식과 원소의 개수를 결정하는 정적인 구조를 갖고 있죠. 이러한 배열은 개발 도중에 원소의 개수를 변경할 수 없는 한계를 갖고 있어요.

하지만 C언어와 C++언어에서도 동적으로 메모리를 할당하는 함수와 연산을 제공하여 프로그램 동작 시에 연속적인 메모리를 할당하여 자료를 관리할 수 있어요. 특히 할당한 메모리에 보관한 자료의 개수를 기억해 두었다가 꽉 차면 메모리를 재할당하여 개발자가 배열의 크기를 신경쓰지 않게 구현할 수도 있어요. STL에서 제공하는 vector는 이러한 원리로 동작하게 만든 템플릿 클래스예요.

여기에서는 STL에서 제공하는 vector를 사용하는 방법을 먼저 익히고 난 후에 비슷하게 직접 만들어 볼 거예요.

STL에서 제공하는 vector를 사용하는 방법은 목적에 따라 다양합니다. 그 중에서 가장 많이 사용하는 방법은 순차적으로 보관하는 방법과 특정 키 순서대로 보관하는 방법, 미리 최대 개수만큼의 디폴트 값을 보관해 두었다가 인덱스 연산을 사용하여 실제 자료로 변경하는 방법이 있어요.

여기에서는 이 세가지 방법으로 vector를 사용하는 것을 다루고 난 후에 STL의 vector와 비슷하게 동작하는 vector를 만드는 실습을 해 볼 거예요.

특히 템플릿 클래스 이름도 STL에서 제공하는 vector와 같은 이름으로 정할 것이기 때문에 사용하는 코드에서 포함하는 헤더 파일과 using 문만 변경하더라도 동작하게 구현할 거예요.

vector