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

C++에서 다차원 배열의 차원을 출력하는 방법

C++에서는 템플릿(template)과 재귀 호출을 활용하면 다차원 배열의 각 차원 크기를 간단하게 확인할 수 있습니다. 이 글에서는 주어진 배열의 차원을 출력하는 C++ 프로그램을 단계별로 살펴봅니다.

알고리즘

템플릿 함수를 사용해 배열의 현재 크기를 구하고, 배열의 마지막 차원에 도달할 때까지 해당 함수를 재귀적으로 호출하면서 각 차원의 크기를 순서대로 출력합니다.

핵심 원리

배열을 참조(&) 형태로 매개변수에 전달하면 컴파일러가 배열의 실제 크기를 그대로 인식할 수 있습니다. 따라서 별도의 크기 계산 없이 템플릿 매개변수만으로 차원 크기를 얻을 수 있으며, 2차원 배열용으로 오버로드된 함수가 내부적으로 첫 번째 행을 1차원 배열처럼 전달해 나머지 차원을 이어서 출력하는 구조입니다.

예제 코드

#include <iostream>
using namespace std;

// 1차원 배열: 마지막 차원의 크기를 출력
template <typename T, size_t N>
void printDimensionsOfArray(const T (&a)[N]) {
    cout << N;
}

// 2차원 배열: 첫 번째 차원을 출력한 뒤 재귀 호출
template <typename T, size_t N, size_t M>
void printDimensionsOfArray(const T (&a)[N][M]) {
    cout << "Dimensions of the Array is: " << N << " x ";
    printDimensionsOfArray(a[0]);
}

int main() {
    int a[6][7];
    printDimensionsOfArray(a);
    return 0;
}

실행 결과

Dimensions of the Array is: 6 x 7

위 코드에서 배열 a는 6행 7열의 2차원 정수 배열입니다. 프로그램은 먼저 첫 번째 차원인 6을 출력한 뒤, a[0](크기가 7인 1차원 배열)을 재귀적으로 전달해 두 번째 차원인 7까지 출력하므로 최종 결과는 "6 x 7"이 됩니다.

더 높은 차원으로 확장하기

같은 패턴으로 템플릿 매개변수를 하나씩 추가한 오버로드를 정의하면 3차원, 4차원 등 임의의 고차원 배열에도 동일하게 적용할 수 있습니다.