由于不是问程式码相关的题目,故前面叙述恕删,最近刚开始看C++ Primer,
读到Ch3多维阵列的部分(P128),它里面给了另一种用auto来跑for loop的方式,举个
例子来说:
int ia[2][2]={1,2,3,4};
//印出阵列的每个元素值
for(auto &row : ia)
for(auto col :row){
cout<< col << endl;
}
书中注明,auto &row中的&不能省略,否则编译器会把row转成一个pointer(指
向每列的第一个元素),跑到第二个loop的时候就变成违法的指令了(原文:That
loop attempts to iterate over an int*),所以说一定要要有&才会把row转成
一个一维阵列,然后我就有点不懂为什么编译器会这样做了,毕竟前面讲auto的
内容好像没有有提到auto声明的时候加上reference会造成这种最后type的不同,
想请问这是C++的规定还是背后有什么特别的哲学(或者机制)吗?