【发布时间】:2012-06-15 21:43:24
【问题描述】:
可能重复:
Accessing elements of a matrix row-wise versus column-wise
在 C++ 中,为什么像这样遍历多维数组更高效:
// Iterate through the highest dimention last (k)
int num[10][10][10];
for(int i = 0; i < 10; ++i)
{
for(int j = 0; j < 10; ++j)
{
for(int k = 0; k < 10; ++k)
{
cout << num[i][j][k];
}
}
}
比这样:
// iterate through the highest dimension first (k)
int num[10][10][10];
for(int k = 0; k < 10; ++k)
{
for(int j = 0; j < 10; ++j)
{
for(int i = 0; i < 10; ++i)
{
cout << num[i][j][k];
}
}
}
【问题讨论】:
-
不是完全重复,但接受的答案非常好,回答了这个问题
-
是的,这个问题的答案回答了我的太多。所以基本上,它更快,因为数组的最后一个维度中的元素一个接一个地存储在内存中,所以如果你遍历最后一个维度,元素会彼此相邻而不是像我最后一个那样在内存中跳转例子?此外,每种语言和每个平台都是这样吗?
-
@cody 对于 C,它可以跨平台移植,但并非所有语言都适用。一个值得注意的例子是 Fortran,其中多维数组按列存储。