Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ 4차원 배열 완벽 이해하기: 개념부터 구현 예제까지

4차원(4D) 배열이란 3차원 배열들을 다시 하나로 묶어놓은 배열을 의미합니다. 즉, 2×2×3×2 형태의 배열은 총 24개의 정수를 저장할 수 있는 공간을 가지며, 네 개의 인덱스를 사용하여 각 요소에 접근합니다.

일반적으로 4차원 배열은 이미지 처리(색상·프레임), 과학 시뮬레이션, 텐서 연산 등 복잡한 데이터 구조가 필요한 분야에서 활용됩니다.

알고리즘

4차원 배열을 다루는 기본적인 절차는 다음과 같습니다.

시작.
   변수를 선언한다.
   배열 요소를 선언한다.
   저장할 요소의 개수를 입력받는다.
   각 요소의 값을 입력받는다.
   배열에 저장된 요소들을 출력한다.
종료.

예제 코드

아래는 C++로 작성된 4차원 배열 예제입니다. int a[2][2][3][2] 배열을 선언하고, 중첩 반복문을 사용해 값을 입력받은 후 그대로 출력합니다.

#include<iostream>
using namespace std;
int main() {
    int a[2][2][3][2];
    cout << "Enter the elements of array: \n";
    for(int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            for(int k = 0; k < 3; ++k ) {
                for(int l = 0; l < 2; ++l ) {
                    cin >> a[i][j][k][l];
                }
            }
        }
    }
    cout<<"\narray elements are stored as:"<<endl;
    for(int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
            for(int k = 0; k < 3; ++k) {
                for(int l = 0; l < 2; ++l) {
                    cout << "a[" << i << "][" << j << "][" << k << "] [" <<l<<"]= " << a[i][j][k][l] << endl;
                }
            }
        }
    }
    return 0;
}

실행 결과

총 2×2×3×2 = 24개의 정수를 순서대로 입력하면, 아래와 같이 인덱스별로 저장된 값이 출력됩니다.

Enter the elements of array:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

array elements are stored as:
a[0][0][0] [0]= 1
a[0][0][0] [1]= 2
a[0][0][1] [0]= 3
a[0][0][1] [1]= 4
a[0][0][2] [0]= 5
a[0][0][2] [1]= 6
a[0][1][0] [0]= 7
a[0][1][0] [1]= 8
a[0][1][1] [0]= 9
a[0][1][1] [1]= 10
a[0][1][2] [0]= 11
a[0][1][2] [1]= 12
a[1][0][0] [0]= 13
a[1][0][0] [1]= 14
a[1][0][1] [0]= 15
a[1][0][1] [1]= 16
a[1][0][2] [0]= 17
a[1][0][2] [1]= 18
a[1][1][0] [0]= 19
a[1][1][0] [1]= 20
a[1][1][1] [0]= 21
a[1][1][1] [1]= 22
a[1][1][2] [0]= 23
a[1][1][2] [1]= 24

핵심 포인트 정리

  • 메모리 크기: int a[2][2][3][2]는 정수형(int) 기준으로 24개 요소 × 4바이트 = 총 96바이트의 메모리를 차지합니다.
  • 인덱스 접근: 각 요소는 a[i][j][k][l]처럼 네 개의 첨자를 통해 접근하며, 모든 인덱스는 0부터 시작합니다.
  • 중첩 반복문: 4차원 배열을 순회하려면 반복문을 4번 중첩해야 하며, 바깥쪽 인덱스부터 안쪽 인덱스 순으로 탐색합니다.
  • 주의 사항: 차원 수가 늘어날수록 필요한 메모리와 코드 복잡도가 급격히 증가하므로, 실제 프로젝트에서는 동적 할당이나 STL 컨테이너(std::vector) 활용을 고려하는 것이 좋습니다.