假设有一个三维数组:
int a[2][2][3] = {{{1, 2, 3}, {4, 5, 6}}, {{7, 8, 9}, {10, 11, 12}}};
让你在以下一维循环中(行优先读取)输出每个元素:
for (int i = 0; i < 12; i++)
{
cout << __________________ << endl;
}
a[i/6][i/3%2][i%3]
刚好今天看了指针的一些知识,想到,对于在栈中连续分配存储空间的数组,如果把 int (*p)[2][3] 类型的指针(也就是a)
转换为 int *p 就可以在一维循环中输出了,对于以上数组的c++代码为:
reinterpret_cast<int *>(a)[i]
优点是非常直观,运行效率应该也比前者高
欢迎大家提出缺点和更好的方法。