#include<iostream>
int main()
{
int a[3][4] = { 1,2,3,4,5 };
for (auto& p : a)
{
for (auto q : p)
{
std::cout << q << std::endl;
}
}
return 0;
}
#include<iostream>
int main()
{
int a[3][4] = { {1, 2, 3, 4}, {5, 0, 0, 0}, 0, 0, 0, 0 };
{
int(&__range1)[3][4] = a;
int(*__begin1)[4] = __range1;
int(*__end1)[4] = __range1 + 3L;
for (; __begin1 != __end1; ++__begin1) {
int(&p)[4] = *__begin1;
{
int(&__range2)[4] = p;
int* __begin2 = __range2;
int* __end2 = __range2 + 4L;
for (; __begin2 != __end2; ++__begin2) {
int q = *__begin2;
std::cout.operator<<(q).operator<<(std::endl);
}
}
}
}
return 0;
}
总结:要使用 range-based for 循环 语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。