使用一维数组模拟C++中的二维数组


在本问题中,我们将了解如何将二维数组转换为一维数组。我们将学习如何将二维数组的元素存储到一维数组中。

这里,一维数组的大小与二维数组中元素的总数相同,即n*m。

在编程中,有两种方法可以将二维数组存储到一维数组中。它们是:

  • 行优先
  • 列优先

行优先:在行优先中,一行中的所有元素都一起存储,然后移动到下一行。

如果大小为nXm的二维数组的元素索引为(i, j),则其在一维数组中的索引为

(j) + (i)*m

列优先:在列优先中,一列中的所有元素都一起存储,然后遍历下一列。

如果大小为nXm的二维数组的元素索引为(i, j),则其在一维数组中的索引为

(i) + (j)*n

让我们看一个例子来理解这个问题:

输入:n = 3, m = 5, (i,j) = (0, 2)

输出:行优先 =
列优先 =

解释:

行优先 = 2 + 0*3 = 2
列优先 = 0 + 2*5 = 10

演示二维数组到一维数组转换的程序:

示例

在线演示

#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

更新于:2021年1月22日

262 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.