logo

C++ 다차원 배열

배열은 인접한 메모리 위치에 있는 동일한 데이터 유형 항목의 컬렉션을 저장하는 데 사용되는 데이터 구조 유형입니다. 배열은 배열이 성장할 수 있는 방향의 수에 따라 1차원 또는 다차원일 수 있습니다. 이번 글에서는 2차원 배열, 3차원 배열 등 다차원 배열에 대해 공부해보겠습니다.

C++의 다차원 배열이란 무엇입니까?

다차원 배열은 두 개 이상의 차원을 가진 배열입니다. 이는 여러 인덱스를 사용하여 각 요소에 액세스하는 동종 항목 컬렉션입니다.

다차원 배열 선언

  datatype     arrayName    [    size1][size2]...[sizeN];>

어디,



  • 데이터 형식: 배열에 저장될 데이터 유형입니다.
  • 배열 이름: 배열의 이름입니다.
  • 크기1, 크기2,…, 크기N: 각 차원의 크기입니다.

예:

Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];>

다차원 배열의 크기

배열의 크기는 데이터 유형의 크기에 배열에 저장할 수 있는 총 요소 수를 곱한 것과 같습니다. 다차원 배열의 각 차원의 크기를 곱하여 배열의 총 요소 수를 계산할 수 있습니다.

예를 들어:

int arr1[2][4];>
  • 배열 int arr1[2][4] 총계를 저장할 수 있습니다 (2*4) = 8 강요.
  • C++에서 int 데이터 유형은 4바이트를 사용하며 배열에는 8개의 요소가 있습니다. 'arr1' int 유형의
  • 전체 크기 = 4*8 = 32바이트 .
int arr2[2][4][8];>
  • 배열 정수 arr2[2][4][8] 총 (2*4*8) = 64개 요소를 저장할 수 있습니다.
  • '의 전체 크기 arr2 ' = 64*4 = 256바이트 .

위의 계산을 확인하기 위해 다음을 사용할 수 있습니다. 크기() 배열의 크기를 알아내는 방법.

C++




미국에는 도시가 몇 개나 있나요?

// C++ program to verify the size of multidimensional> // arrays> #include> using> namespace> std;> > int> main()> {> >// creating 2d and 3d array> >int> arr1[2][4];> >int> arr2[2][4][8];> > >// using sizeof() operator to get the size of the above> >// arrays> >cout <<>'Size of array arr1: '> <<>sizeof>(arr1)> ><<>' bytes'> << endl;> >cout <<>'Size of array arr2: '> <<>sizeof>(arr2)> ><<>' bytes'>;> > >return> 0;> }>

>

>

산출

Size of array arr1: 32 bytes Size of array arr2: 256 bytes>

가장 널리 사용되는 다차원 배열은 다음과 같습니다.

  • 2차원 배열
  • 3차원 배열

2차원 배열(또는 2D 배열)

C++의 2차원 배열은 행과 열로 구성된 요소의 모음입니다. 테이블이나 그리드로 시각화할 수 있으며 각 요소는 두 개의 인덱스(행용 인덱스와 열용 인덱스)를 사용하여 액세스됩니다. 1차원 배열과 마찬가지로 2차원 배열 인덱스도 행과 열 모두에 대해 0에서 n-1 사이입니다.

C++의 2차원 배열 구성

2D 배열의 구문

데이터_유형 배열_이름[ N ][ ];

어디,

  • N: 행 수.
  • 중: 열 수.

2D 배열을 정적으로, 동적으로 선언할 수 있습니다. 정적 선언에서는 컴파일 타임에 메모리가 할당되고, 동적 메모리에서는 런타임 중에 할당됩니다. 위는 2D 배열의 정적 선언 구문입니다. 2차원 배열을 동적으로 선언하는 방법을 알아보려면 다음을 참조하세요. 이것 기사.

C++에서 2차원 배열 초기화

2D 배열을 초기화하는 다양한 방법은 다음과 같습니다.

  • 초기화 목록 사용
  • 루프 사용

1. 초기화 목록을 사용하여 2D 배열 초기화

두 가지 방법으로 초기화 목록을 사용하여 2D 배열을 초기화할 수 있습니다. 다음은 초기화 목록을 사용하여 2D 배열을 초기화하는 첫 번째 방법입니다.

첫 번째 방법: 아래 배열에는 2개의 행과 4개의 열이 있습니다. 처음 4개 요소는 첫 번째 행에 채워지고 다음 4개 요소는 두 번째 행에 채워지는 방식으로 요소가 채워집니다.

int arr[2][4] = {0, 1, 2, 3, 4, 5, 6, 7};>

두 번째 방법: 아래 방법은 2D 배열을 초기화하는 더 깔끔한 방법입니다. 중첩된 목록은 행의 요소를 나타내며 그 내부의 요소 수는 2D 배열의 열 수와 같습니다. 중첩된 목록의 수는 열의 수를 나타냅니다.

int x[2][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}};>

2. 루프를 사용한 2D 배열 초기화

루프를 사용하여 2D 배열을 초기화할 수도 있습니다. 2D 배열을 초기화하려면 두 개의 중첩 루프를 사용해야 하며 중첩 루프는 차원과 동일합니다. 예를 들어, 3D 배열을 초기화하려면 세 개의 중첩 루프를 사용해야 합니다. 예를 살펴보겠습니다.

예: 아래 예에서는 2D 배열을 1로 초기화했습니다. 외부 루프는 행을 추적하는 데 사용됩니다. i=0은 0 인덱싱 때문에 첫 번째 행을 의미합니다. 마찬가지로 j=0은 첫 번째 열을 의미하고 이 x [0][0]을 결합합니다. 2D 배열의 첫 번째 셀을 나타냅니다.

int x[2][4]; for(int i = 0; i <2; i++){  for(int j = 0; j <4; j++){  x[i][j] = 1;  } }>

C++에서 2차원 배열 요소에 액세스

행 및 열 인덱스를 사용하여 2차원 배열의 요소에 액세스할 수 있습니다. 이는 행렬 요소 위치와 유사하지만 유일한 차이점은 여기서 인덱싱이 0부터 시작된다는 것입니다.

통사론:

array_name[i][j];>

어디,

  • 나: 행의 인덱스입니다.
  • 제이: 열의 인덱스입니다.

예: 아래는 두 번째 행과 세 번째 열의 요소 인덱스입니다.

int x[1][2];>

2D 배열의 요소를 인쇄하여 코드를 사용하여 이를 이해해 보겠습니다.

2D 배열의 예

C++




// c++ program to illustrate the two dimensional array> #include> using> namespace> std;> > int> main()> {> > >int> count = 1;> > >// Declaring 2D array> >int> array1[3][4];> > >// Initialize 2D array using loop> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >array1[i][j] = count;> >count++;> >}> >}> > >// Printing the element of 2D array> >for> (>int> i = 0; i <3; i++) {> >for> (>int> j = 0; j <4; j++) {> >cout << array1[i][j] <<>' '>;> >}> >cout << endl;> >}> > >return> 0;> }>

>

>

산출

1 2 3 4 5 6 7 8 9 10 11 12>

설명: 위 코드에서는 카운트를 '1'로 초기화하고 3행 4열의 2D 배열을 선언한 후 루프가 반복될 때마다 count 값과 count 증분 값으로 배열을 초기화했습니다. 그런 다음 중첩 루프를 사용하여 2D 배열을 인쇄하고 있으며 아래 출력에서 ​​3개의 행과 4개의 열이 있음을 볼 수 있습니다.

시간 복잡도: 오(n*m)
공간 복잡도: 오(n*m)

여기서 n은 행 수이고 m은 열 수입니다.

C++의 3차원 배열

3D 배열은 3차원 직육면체 구조로 요소를 저장하는 데이터 구조입니다. 여러 개의 2차원 배열이 서로 쌓여 있는 집합으로 시각화할 수 있습니다. 3D 배열의 각 요소는 행 인덱스, 열 인덱스, 깊이 인덱스라는 세 가지 인덱스로 식별됩니다.

C++의 3차원 배열 구성

자바 스캐너 클래스

C++에서 3차원 배열 선언

C++에서 3D 배열을 선언하려면 2D 차원과 함께 세 번째 차원을 지정해야 합니다.

통사론:

dataType arrayName[d][r];>
  • 데이터 형식: 각 요소에 저장될 데이터 유형입니다.
  • 배열 이름: 배열 이름
  • 디: 2D 배열의 수 또는 배열의 깊이.
  • 아르 자형: 각 2D 배열의 행 수입니다.
  • 씨: 각 2D 배열의 열 수입니다.

예:

int array[3][5][2];>

C++에서 3차원 배열 초기화

C++에서 3D 배열을 초기화하려면 2D 배열을 초기화하는 데 사용한 것과 동일한 방법을 따릅니다. 3D 배열에는 차원이 하나 더 있으므로 요소의 중첩 목록을 하나 더 추가해야 합니다.

C의 3D 배열은 다음을 사용하여 초기화할 수 있습니다.

  1. 초기화 목록
  2. 루프

초기화 목록을 사용하여 3D 배열 초기화

방법 1: 이 방법에서는 중괄호 안에 요소의 총 개수를 써야 하며, 각 항목은 주어진 크기에 따라 해당 위치에 배치됩니다.

int x[3][5][2] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,   10, 11, 12, 13, 14, 15, 16, 17, 18, 19,  20, 21, 22, 23, 24, 25, 26, 27, 28, 30};>

방법 2(더 좋음) : 이 방법에서는 중첩된 목록을 사용하여 요소를 분할했으며 읽기 쉽습니다.

int x[3][5][2] =   {      {   {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9}   }  ,     {   {10, 11}, {12, 13}, {14, 15}, {16, 17}, {18, 19}   }  ,    {   {20, 21}, {22, 23}, {24, 25}, {26, 27}, {28, 30}   }  ,    }  ;>

루프를 사용하여 3D 배열 초기화

이 방법은 세 번째 차원에 대해 하나 이상의 중첩 루프가 있는 루프를 사용하여 2D 배열을 초기화하는 것과 동일합니다.

int x[3][5][2]; for (int i = 0; i <3; i++) {  for (int j = 0; j <5; j++) {  for (int k = 0; k <2; k++) {  x[i][j][k] =   (some_value)  ;  }  } }>

C++에서 3차원 배열의 요소에 액세스

3D 배열의 요소에 액세스하는 것은 2D 배열의 요소에 액세스하는 것만큼 간단합니다. 여기서 우리가 해야 할 추가 작업은 3차원을 추적하기 위해 중첩 루프를 하나 더 추가하는 것입니다.

C++




// C++ program to illustrate the 3d array> #include> using> namespace> std;> > int> main()> {> > >int> count = 0;> >// declaring 3d array> >int> x[2][2][3];> > >// initializing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >x[i][j][k] = count;> >count++;> >}> >}> >}> > >// printing the array> >for> (>int> i = 0; i <2; i++) {> >for> (>int> j = 0; j <2; j++) {> >for> (>int> k = 0; k <3; k++) {> >printf>(>'x[%d][%d][%d] = %d '>, i, j, k,> >x[i][j][k]);> >count++;> >}> >}> >}> > >return> 0;> }>

>

>

산출

x[0][0][0] = 0 x[0][0][1] = 1 x[0][0][2] = 2 x[0][1][0] = 3 x[0][1][1] = 4 x[0][1][2] = 5 x[1][0][0] = 6 x[1][0][1] = 7 x[1][0][2] = 8 x[1][1][0] = 9 x[1][1][1] = 10 x[1][1][2] = 11>

설명: 위 코드에서는 count 변수를 사용하여 0부터 7까지의 숫자로 위에서 설명한 루프를 사용하여 3D 배열을 초기화한 다음 3D 배열을 초기화하는 데 사용한 것과 동일한 루프를 사용하여 요소에 액세스했습니다. 유일한 차이점은 특정 위치에 요소를 할당하는 대신 다음과 같이 말하는 것입니다. x[0][0][1]=1 아래 출력에서 ​​볼 수 있듯이 해당 위치에 저장된 요소를 인쇄하고 있습니다.