배열은 인접한 메모리 위치에 있는 동일한 데이터 유형 항목의 컬렉션을 저장하는 데 사용되는 데이터 구조 유형입니다. 배열은 배열이 성장할 수 있는 방향의 수에 따라 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 사이입니다.

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++에서 3D 배열을 선언하려면 2D 차원과 함께 세 번째 차원을 지정해야 합니다.
통사론:
dataType arrayName[d][r];>
- 데이터 형식: 각 요소에 저장될 데이터 유형입니다.
- 배열 이름: 배열 이름
- 디: 2D 배열의 수 또는 배열의 깊이.
- 아르 자형: 각 2D 배열의 행 수입니다.
- 씨: 각 2D 배열의 열 수입니다.
예:
int array[3][5][2];>
C++에서 3차원 배열 초기화
C++에서 3D 배열을 초기화하려면 2D 배열을 초기화하는 데 사용한 것과 동일한 방법을 따릅니다. 3D 배열에는 차원이 하나 더 있으므로 요소의 중첩 목록을 하나 더 추가해야 합니다.
C의 3D 배열은 다음을 사용하여 초기화할 수 있습니다.
- 초기화 목록
- 루프
초기화 목록을 사용하여 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 아래 출력에서 볼 수 있듯이 해당 위치에 저장된 요소를 인쇄하고 있습니다.