使用一维数组模拟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
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP