Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 1차원 배열을 사용하여 2차원 배열 에뮬레이션

<시간/>

이 문제에서는 2차원 배열을 1차원 배열로 변환하는 방법을 이해할 것입니다. 2차원 배열의 요소를 1차원 배열에 저장하는 방법을 살펴보겠습니다.

여기서 1차원 배열의 크기는 2차원 배열의 원소의 총 개수인 n*m과 같다.

프로그래밍에서 2차원 배열을 1차원 배열에 저장하는 두 가지 방법이 있습니다. 그들은-

  • 행 주요
  • 열 전공

주요 행: 행 메이저에서는 행의 모든 ​​요소가 함께 저장되고 다음 행으로 이동합니다.

크기가 nXm인 2차원 배열의 요소에 인덱스 (i, j)가 1차원 배열에 저장되어 있으면 1차원 배열의 인덱스는

(j) + (i)*m

주요 열: 열 메이저에서는 열의 모든 요소가 함께 저장되고 다음 열이 순회됩니다.

크기가 nXm인 2차원 배열의 요소에 인덱스 (i, j)가 1차원 배열에 저장되어 있으면 1차원 배열의 인덱스는

(i) + (j)*n

문제를 이해하기 위한 예를 보겠습니다.

입력: n =3, m =5, (i,j) =(0, 2)

출력: 행 메이저 =
열 주요 =

설명:

주요 행 =2 + 0*3 =3
Col-major =0 + 2*5 =10

2-D에서 1-D로의 변환을 설명하는 프로그램,

예시

#include<iostream>
using namespace std;

int main() {

int n = 3;
int m = 5;
   int grid[n][m] = {{1, 2, 3},
                {4, 5, 6},
                {7, 8, 9},
    {10, 11, 12},
    {13, 14, 15}};
   int i = 0;
   int j = 2;
   int rowMajorIndex = i*n + j;
   cout<<"Index of element at index (0, 2) in 1-D array using row-major is "<<rowMajorIndex<<endl;
   int colMajorIndex = i + j*m;
   cout<<"Index of element at index (0, 2) in 1-D array using column-major is "<<colMajorIndex<<endl;
   return 0;
}

출력 -

Index of element at index (0, 2) in 1-D array using row-major is 2
Index of element at index (0, 2) in 1-D array using column-major is 10