可能重复:
如何在 C++ 中使用数组?
使用大小为 'mn' 的一维数组而不是使用大小为 mxn 的二维数组是否会有任何内存问题或执行问题或任何优点或缺点?
在内存中,它们的表示完全相同。区别在于语义。如果您正在对矩阵进行操作,则将元素访问为
x[i][j]
比
x[i*n + j]
从内存角度来看,数组 1D 和 2D 完全相同。唯一的区别是语法上的。3D 数组仅对围绕问题设计逻辑有用。
例如:
array x[m*n]
array x[m][n]
当我们谈论记忆时,两者都是一样的
您可以创建 int 的 2D 数组和指向 int 的指针。
然后你可以将指针设置为第一个元素的地址
int* singleDimention=&twoDimension[0][0];
如果您处理所有项目而不考虑它们的二维坐标,那么使用一维数组会更快(稍微)。
numItems=n*m;
for(i=0;i<numItems;i++){
do stuff with singleDimention[i];
}