多维数组的循环范围,使用什么类型?

时间:2014-05-20 19:18:50

标签: c++ for-loop types range auto

嗨,我遇到了一个问题,我试图为多维数组的循环做一个范围,但我无法弄清楚要使用的类型。使用此代码,该程序可以正常运行,但是当我尝试选择我的类型而不是自动时,我会收到错误,我已经尝试过搜索问题,但却找不到任何问题。帮助将不胜感激!

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

for( auto &ref_ia : ia){

    for(int &ref_ref : ref_ia){

        cout << ref_ref << " ";

    }

}

2 个答案:

答案 0 :(得分:4)

元素类型是一个包含4个整数的数组,因此您需要引用4个整数的数组:

#include <initializer_list>
#include <iostream>

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

    for (int (&ref_ia)[4] : ia)
    {
        for(int &ref_ref : ref_ia)
        {
            std::cout << ref_ref << " ";
        }
    }
}

答案 1 :(得分:2)

希望以下代码能够让您了解auto

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

  for (int (&ref_ia)[4] : ia){

    for (int &ref_ref : ref_ia){

      cout << ref_ref << " ";

    }

  }
  return 0;
}

int (&ref_ia)[4]是对四维数组或整数的引用。