使用范围for循环而不使用auto关键字c ++

时间:2017-12-29 23:01:43

标签: c++ arrays for-loop range iteration

对于这个赋值,我应该使用一个范围来打印ia中的元素而不使用auto关键字。基本上,该任务试图帮助我们理解多维数组。我知道代码中发生了什么,但我一直遇到一些错误。语法有问题,我无法弄明白。

int ia[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};

cout << endl;
for(int &a : ia)
    for(int b : a)
        cout << b << endl;

我一直收到这些错误:

.. \ src \ Sec_3_5_3.cpp:127:15:错误:无效转换为'int *'到'int'[-fpermissive]   for(int&amp; a:ia)

.. \ src \ Sec_3_5_3.cpp:127:15:错误:无法将rvalue'(int)((int *)__ for_begin)'绑定到'int&amp;'

.. \ src \ Sec_3_5_3.cpp:128:15:错误:未在此范围内声明'begin'

.. \ src \ Sec_3_5_3.cpp:128:15:错误:'end'未在此范围内声明

1 个答案:

答案 0 :(得分:2)

每个ia[i]不是int,而是4个int的数组。
为了能够保持大小,你必须使用参考:

for(int (&a)[4] : ia)
    for(int b : a)