Nnnnnnnnn
Vector 2차원 배열 본문
Vector 2차원 배열
배열을 사용하는 경우는 상당히 많은데, vector를 사용하면 굉장히 편리한 것 같다. C 같은 경우 정적 할당 외에 동적 할당을 하려면 malloc이나 calloc을 사용하는데, C++에서 vector STL을 사용하면 내가 원하는 크기로 매우 간편하게 배열로 사용할 수 있다. 2차원 vector를 생각할 때 컨테이너라고 생각하면 이해하기 쉬울 것 같다. 컨테이너 틀 안에 한 줄 한 줄의 vector 요소들을 담는다고 생각할 수 있다.
int k;
cin >> k;
vector< vector<int> > tmp; =====> 2차원 vector 생성
for(int i=0; i<k; i++){
vector<int> a(k); =====> 입력받은 k 개수만큼의 크기인 1차원 배열을
tmp.push_back(a); =====> 2차원 vector 컨테이너 한 줄에 넣는다.
}
만약에 다음과 같은 6개 원소로 이루어진 1차원 배열 각 한 줄 한 줄이 2차원 vector인 vector< vector<int> > plate 에 담겨 있다고 생각하고 이를 출력하고 싶으면,
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
for (int i = 0; i < plate.size(); i++) {
for (int j = 0; j < 6; j++) {
printf("%d ", plate[i][j]);
}
printf("\n");
}
이와 같이 출력해주면 된다. 또는, 다음과 같이 출력해줘도 나오는 것을 확인할 수 있었다.
for (auto &v : plate) {
for (int i = 0; i < v.size(); i++) {
printf("%d ", v[i]);
}
printf("\n");
}