C++ 다차원 배열 마스터하기: 선언, 초기화, 순회
C++ 다차원 배열
2차원, 3차원 배열의 선언, 초기화, 순회 방법을 실전 코드 샘플과 모범 사례와 함께 안내합니다.
C++에서 다차원 배열은 단순히 **배열의 배열**입니다. 예:
int x[3][4];
x는 12개 요소를 담는 2차원 배열입니다. 3행 4열 표로 시각화할 수 있습니다.
3차원 배열도 같은 논리:
float x[2][4][3];
총 24개 요소(2 × 4 × 3 = 24).
다차원 배열 초기화
1차원 배열처럼 여러 방식으로 초기화 가능하지만 가독성이 중요합니다. 권장 방식을 소개합니다.
1. 2차원 배열 초기화
int test[2][3] = {2, 4, 5, 9, 0, 19};
문법상 맞지만 가독성 나쁨. 중첩 초기화자 권장:
int test[2][3] = {{2, 4, 5}, {9, 0, 19}};
2행 3열이 명시적.
2. 3차원 배열 초기화
int test[2][3][4] = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};
가독성 매우 나쁨. 차원별 그룹화 권장:
int test[2][3][4] = {
{{3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2}},
{{13, 4, 56, 3}, {5, 9, 3, 5}, {5, 1, 4, 9}}
};
첫 번째 차원이 두 개의 3행 블록을 포함, 각각 4열.
예제 1: 2차원 배열
#include <iostream>
using namespace std;
int main() {
int test[3][2] = {{2, -5}, {4, 0}, {9, 1}};
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 2; ++j) {
cout << "test[" << i << "][" << j << "] = " << test[i][j] << endl;
}
}
return 0;
}
실행 결과
test[0][0] = 2
test[0][1] = -5
test[1][0] = 4
test[1][1] = 0
test[2][0] = 9
test[2][1] = 1
중첩 for 루프로 행→열 순회하며 각 요소 출력.
예제 2: 2차원 배열 사용자 입력 받기
#include <iostream>
using namespace std;
int main() {
int numbers[2][3];
cout << "Enter 6 numbers: " << endl;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cin >> numbers[i][j];
}
}
cout << "The numbers are: " << endl;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
cout << "numbers[" << i << "][" << j << "]: " << numbers[i][j] << endl;
}
}
return 0;
}
실행 결과
Enter 6 numbers: 1 2 3 4 5 6
The numbers are:
numbers[0][0]: 1
numbers[0][1]: 2
numbers[0][2]: 3
numbers[1][0]: 4
numbers[1][1]: 5
numbers[1][2]: 6
두 중첩 루프로 입력 수집 후 저장값 출력.
예제 3: 3차원 배열
#include <iostream>
using namespace std;
int main() {
int test[2][3][2] = {
{{1, 2}, {3, 4}, {5, 6}},
{{7, 8}, {9, 10}, {11, 12}}
};
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 2; ++k) {
cout << "test[" << i << "][" << j << "][" << k << "] = " << test[i][j][k] << endl;
}
}
}
return 0;
}
실행 결과
test[0][0][0] = 1
test[0][0][1] = 2
test[0][1][0] = 3
test[0][1][1] = 4
test[0][2][0] = 5
test[0][2][1] = 6
test[1][0][0] = 7
test[1][0][1] = 8
test[1][1][0] = 9
test[1][1][1] = 10
test[1][2][0] = 11
test[1][2][1] = 12
3차원 배열 순회엔 세 중첩 루프 필요—각 차원마다 하나. 이 패턴은 고차원으로 자연 확장되나 복잡도 급증.