是否存在任何内存问题或执行问题或使用大小为'mn'的一维数组而不是使用大小为mxn的二维数组的任何优点或缺点?
答案 0 :(得分:2)
在记忆中,它们的表现完全相同。区别在于语义。如果您在矩阵上操作,则访问元素
x[i][j]
比
更直观x[i*n + j]
答案 1 :(得分:1)
阵列1D和2D在内存透视图中完全相同。唯一的区别是语法上的。 3D数组只对围绕问题设计逻辑很有用。
e.g:
array x[m*n]
array x[m][n]
当我们谈论内存时,两者都是一样的
答案 2 :(得分:0)
您可以创建int的2D数组和指向int的指针。
然后,您可以将指针设置为第一个元素的地址
int* singleDimention=&twoDimension[0][0];
如果您处理所有项目而不管其2D坐标如何,使用一维数组执行此操作会更快(稍微)。
numItems=n*m;
for(i=0;i<numItems;i++){
do stuff with singleDimention[i];
}