C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で1次元配列を使用して2次元配列をエミュレートする


この問題では、2次元配列から1次元配列への変換について理解します。 2次元配列の要素を1次元配列に格納する方法を見ていきます。

ここで、1次元配列のサイズは、2次元配列の要素の総数であるn*mと同じです。

プログラミングでは、2次元配列を1次元配列に格納する方法が2つあります。それらは-

  • 行メジャー
  • 列メジャー

行メジャー: 行メジャーでは、行のすべての要素が一緒に格納されてから、次の行に移動します。

サイズnXmの2次元配列の要素にインデックス(i、j)が格納されている場合、1次元配列のインデックスは

です。

(j)+(i)* m

コラムメジャー: 列メジャーでは、列のすべての要素が一緒に格納されてから、次の列がトラバースされます。

サイズnXmの2次元配列の要素にインデックス(i、j)が格納されている場合、1次元配列のインデックスは

です。

(i)+(j)* n

問題を理解するための例を見てみましょう

入力: n =3、m =5、(i、j)=(0、2)

出力: 行メジャー=
列メジャー=

説明:

行メジャー=2+ 0 * 3 =3
Col-major =0 + 2 * 5 =10

2次元から1次元への変換を説明するプログラム

#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

  1. newを使用してC++で2D配列を宣言するにはどうすればよいですか

    動的2D配列は、基本的に配列へのポインターの配列です。これは、寸法が3x4の2D配列の図です。 アルゴリズム Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print the array.    Clear the memory by deleting it. End サンプルコード

  2. newを使用してC++で2次元配列を宣言するにはどうすればよいですか?

    動的2D配列は、基本的に配列へのポインターの配列です。したがって、最初にポインタの配列をポインタに初期化してから、ループ内の各1D配列を初期化する必要があります。 例 #include<iostream> using namespace std; int main() {    int rows = 3, cols = 4;    int** arr = new int*[rows];    for(int i = 0; i < rows; ++i)    arr[i] = new int[co