2
可能重复:
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];
}
}
}
可能重复:http://stackoverflow.com/q/4716125/1328439 –
不是一个确切的重复,但接受的答案是优秀的,回答这个问题 – stefaanv
呀,这个问题的答案回答也是我的漂亮多了。所以基本上它的速度更快,因为数组最后一个维度中的元素在内存中一个接一个地存储起来,所以如果你遍历最后一个维度,那么这些元素就会彼此相邻,而不是象我的最后一个一样跳过内存例?此外,每种语言和每个平台都是如此吗? – cody