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]의 원소를 초기화한 것을 뜻한다.
알고리즘 공부를 다시 시작하는데 개념 정리할겸 작성했다 ㅎㅎ
'알고리즘 > 기타 개념' 카테고리의 다른 글
[C++] string의 변환 (0) | 2021.08.27 |
---|---|
[C++] upper_bound, lower_bound (0) | 2021.08.26 |
[C++] 배열 초기화 방법 - array, vector (0) | 2021.08.23 |
[C++] vector 오름차순, 내림차순 (0) | 2021.08.18 |
[C++] cin과 getline을 같이 사용할 때 필요한 것 (0) | 2021.08.13 |