0

可能重复:
如何在 C++ 中使用数组?

使用大小为 'mn' 的一维数组而不是使用大小为 mxn 的二维数组是否会有任何内存问题或执行问题或任何优点或缺点?

4

3 回答 3

2

在内存中,它们的表示完全相同。区别在于语义。如果您正在对矩阵进行操作,则将元素访问为

x[i][j]

x[i*n + j]
于 2012-09-10T18:54:07.743 回答
1

从内存角度来看,数组 1D 和 2D 完全相同。唯一的区别是语法上的。3D 数组仅对围绕问题设计逻辑有用。

例如:

array x[m*n]
array x[m][n]

当我们谈论记忆时,两者都是一样的

于 2012-09-10T21:01:24.003 回答
0

您可以创建 int 的 2D 数组和指向 int 的指针。

然后你可以将指针设置为第一个元素的地址

int* singleDimention=&twoDimension[0][0];

如果您处理所有项目而不考虑它们的二维坐标,那么使用一维数组会更快(稍微)。

numItems=n*m;
for(i=0;i<numItems;i++){
    do stuff with singleDimention[i];
}
于 2012-09-10T21:10:05.313 回答