相同大小的2D和1D阵列之间的内存或执行问题?

时间:2012-09-10 18:52:07

标签: c++ c arrays

  

可能重复:
  How do I use arrays in C++?

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

3 个答案:

答案 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];
}