프로그래밍 언어/C & C++ 정리

가변배열 동적할당 vector

게임 개발 2023. 1. 18. 15:44

vector 템플릿 클래스는 동적 배열에 속하는 string 클래스와 유사하다.

 

프로그램이 실행되는 동안 vector 객체의 크기를 세팅할 수 있고(=동적할당),

 

새로운 데이터를 마지막에

추가하거나 중간에 데이터를 삽입할 수도 있다(=동적할당).

 

기본적으로 동적 배열을 생성하기 위해 new를 사용하는 것을 대체할 수 있다.

 

실제로 vector 클래스는 메모리를 관리하기 위해서 new와 delete를 사용하지만,

그 과정은 자동으로 진행된다.

 

템플릿 클래스를 의미하는 내용에 대해서 너무 깊은 내용을 다루지는 않겠지만,

몇 가지 기본적이고 실질적인 문제를 살펴보도록 하겠다.

 

첫째, vector객체를 사용하기 위해서는 vector 헤더 파일을 포함해야 한다.

 

둘째, vector식별자는 std 이름 공간의 일부분이기 때문에 using 명령, using 선언

또는  std::vector을 사용할 수 있다.

(= using namespace std 하거나, std::vector 붙여서 쓰시오.)

 

셋째, 템플릿은 저장된 데이터 형태를 지시하기 위해서 다른 구문을 사용한다.

 

넷째, vector 클래스는 원소의 개수를 지칭하기 위해서 다른 구문을 사용한다. 

 

#include <vector>

...

using namespace std;		// int의 zero 사이즈 배열을 생성해라
vector<int> vi;
int n;
cin >> n;
vector<double> vd(n);		// n개의 더블 배열을 생성해라

vi는 vector <int> 형의 객체라고 얘기하고 vd는 <double> vector 형의 객체라고 말한다.

vector 객체는 값을 삽입하거나 더할 때 자동으로 크기를 조정하기 때문에

vi가 0의 크기에서부터 시작하는 것은 아무런 문제가 되지 않는다.

 

그러나, 크기를 재조정할 때에는, vector 패키지에 포함된 다양한 방법들을 사용할 수 있다.

 

일반적으로 다음의 선언은 typeName 형태의 n_elem 원소들을 보유할 수 있는

vt vector 객체를 생성한다.

 

	vector<typeName> vt(n_elem);

 

매개변수 n_elem은 정수형 상수 또는 정수형 변수가 될 수 있다.