[C++]vector를 2차원으로 선언하는 방법

c 스타일 배열을 2차원으로 선언하는 방법은 간단하다. arr[i][j]와 같이 선언하면 된다.

벡터를 2차원으로 선언하려면 어떻게 해야 할까?

 

2차원 배열은 크기가 i*j인 표의 형태로 이해하기 마련이다. 실상은 i개의 배열이 있고, 각각의 원소가 j개의 배열을 가리키고 있는 형태이다.

 

다시 말해 배열이 배열을 담고 있는 형태이다. 

 

    arr[][0] arr[][1] arr[][2]
arr[0] arr[0][0] arr[0][1] arr[0][1]
arr[1] arr[1][0] arr[1][1] arr[1][2]
arr[2] arr[2][0] arr[2][1] arr[2][2]
arr[3] arr[3][0] arr[3][1] arr[3][2]

 

벡터도 이와 같이 벡터가 벡터를 담은 형태로 선언하면 2차원 벡터가 된다.

 

vector<vector<int>> v;

vector의 자료형으로 int가 아니라 vector를 주는 것이다.

 

2차원 벡터를 초기화하는 방법도 살펴보자.

 

벡터를 초기화할 때는

vector<int> v(n, 0);

이와 같이 벡터명 뒤에 괄호로 인수를 준다. 원소의 개수와 초기화할 값을 우선 넣는다고 하자.

이를 2차원에 그대로 적용하면 된다.

 

vector<vector<int>> v(n, vector<int>(n, 0));

 

v라는 벡터는 n개의 원소를 가지고 있는데, 각 원소를 int 자료형을 담은 vector로 초기화하라는 뜻이다. 내부의 벡터는 n개의 원소를 담고 있으며 0이라는 값으로 초기화된다.

 

2차원 벡터를 사용할 때는 배열과 동일하게 첨자를 통해 사용할 수 있다.

 

int a = v[1][2];