반응형
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];
반응형
'프로그래밍 > C, C++' 카테고리의 다른 글
포르잔 C++ 바이블 ch12 연습문제 & 프로그래밍 문제 (0) | 2023.03.05 |
---|---|
포르잔 C++ 바이블 Ch.11 연습문제 & 프로그래밍 문제 (1) | 2023.01.28 |
[C++] 생성자와 소멸자 (0) | 2022.12.13 |
[C++] 클래스의 구조 (0) | 2022.12.11 |
while 반복문을 종료하는 방법: 센티넬, EOF, 플래그 (0) | 2022.12.10 |