알고리즘/기타 개념

[C++] 2차원 vector 사용법

천니 2021. 8. 13. 22:13
728x90

다시 알고리즘 공부를 시작했다. 공부를 하다가 2차원 vector 사용하는 방법에 대해 정리하고 싶어서 글을 쓴다.

 

우선 일반적인 1차원 vector 선언을 살펴보면, 

vector<int> arr;
arr.push_back(10);

 

위와 같은 형식으로 동적으로 담을 수 있는 구조로 배열을 사용할 때 많이 쓰인다. 

 

2차원 vector의 선언은 vector안에 vector 자료형을 담는다는 느낌으로 

vector<vector<int>> arr;

이렇게 선언할 수 있다. 

 

이 arr 배열은 vector<int> 자료형을 담는 vector이므로 vector<int> 자료형을 담아줘야한다.

 

vector<vector<int>> arr;
vector<int> arr1;

arr.push_back(arr1);

 

이렇게 선언을 하면 2차원 배열과 같이 쓰일 수 있는 것이다. 

 

vector < vector <int> > arr;
vector <int> arr1;
 
arr.push_back(arr1);

arr[0].push_back(10);
cout << arr[0][0]; // 10이 출력된다.

 

위와 같이 2차원 배열처럼 사용할 수 있다.  arr입장에서는 비어있는 arr1을 입력받은 것으로 이후에 동적으로 입력하여 사용할 수 있다.

 

vector의 초기화 부분도 살펴보자. 

 

일반적인 1차원 vector의 초기화는

 

vector<int> arr(10,0);

이와 같이 나타낼 수 있다. arr는 10개의 원소를 가지고 이 원소들은 0이라는 뜻이다. 

 

이제 2차원 vector의 초기화를 살펴보자.

 

vector <vector <int>> arr(10,vector <int>(10,0));

위와 같이 10개의 원소를 가지고 있고, 각 원소는 10개의 원소 (모두 0) 를 가지고 있다. 

 

즉 arr[0][0]~arr[10][10]의 원소를 초기화한 것을 뜻한다. 

 

알고리즘 공부를 다시 시작하는데 개념 정리할겸 작성했다 ㅎㅎ