C++에서 벡터(vector)를 요소로 가지는 벡터를 2차원 벡터, 즉 2D 벡터라고 부릅니다. 2D 벡터는 행마다 서로 다른 개수의 요소를 가질 수 있어, 일반적인 2차원 배열보다 유연하게 사용자가 원하는 크기를 지정할 수 있다는 장점이 있습니다.
알고리즘
시작
2D 벡터 타입의 변수 v를 선언한다.
벡터 v에 값을 초기화한다.
"the 2D vector is:" 를 출력한다.
for (int i = 0; i < v.size(); i++)
for (int j = 0; j < v[i].size(); j++)
2D 벡터의 값 v[i][j]를 출력한다.
종료.예제 코드
아래 예제에서는 중괄호 초기화 리스트를 이용해 각 행의 크기가 서로 다른 2D 벡터를 생성하고, 이중 반복문을 통해 전체 요소를 출력합니다.
#include <iostream>
#include <vector> // C++에서 2D 벡터를 사용하기 위한 헤더 파일
using namespace std;
int main() {
vector<vector<int> > v{ { 4,5, 3, 10 }, // 값으로 2D 벡터 초기화.
{ 2, 7, 11 },
{ 3, 2, 1, 12 } };
cout<<"the 2D vector is:"<<endl;
for (int i = 0; i < v.size(); i++) { // 2D 벡터 출력.
for (int j = 0; j < v[i].size(); j++)
cout << v[i][j] << " ";
cout << endl;
}
return 0;
}실행 결과
the 2D vector is: 4 5 3 10 2 7 11 3 2 1 12
코드 설명
위 코드의 핵심을 살펴보면 다음과 같습니다.
vector<vector<int>>타입은 각 요소가 다시int형 벡터인 컨테이너를 의미하며, 이것이 곧 2D 벡터입니다.- 초기화 시 첫 번째 행은 4개, 두 번째 행은 3개, 세 번째 행은 4개의 요소를 가지므로, 각 행의 크기를 자유롭게 정의할 수 있습니다.
- 바깥쪽 반복문은 행(row)의 개수만큼, 안쪽 반복문은 해당 행의 열(column) 개수만큼 순회하며 모든 요소를 출력합니다.
사용자 정의 크기로 2D 벡터 생성하기
초기화 리스트 대신 원하는 행과 열의 크기를 직접 지정하여 2D 벡터를 만들 수도 있습니다.
int rows = 3, cols = 4; vector<vector<int>> v(rows, vector<int>(cols, 0)); // 3행 4열, 모든 값 0으로 초기화
이처럼 vector<vector<int>> 생성자에 행의 개수와 각 행을 구성할 벡터의 크기(및 초기값)를 전달하면, 원하는 크기의 2D 벡터를 손쉽게 생성할 수 있습니다. 실행 중에 크기를 동적으로 변경해야 하는 상황에서도 일반 배열보다 훨씬 편리하게 활용할 수 있습니다.