【问题标题】:Range for loop of a multi-dimensional array, what type to use?多维数组的范围for循环,使用什么类型?
【发布时间】:2014-05-20 19:18:50
【问题描述】:

您好,我遇到了一个小问题,我正在尝试为多维数组的循环范围做一个范围,但我不知道要使用什么类型。使用此代码,程序可以完美运行,但是当我尝试选择我的类型而不是 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 << " ";

    }

}

【问题讨论】:

  • 外循环应该是int*
  • for (int (&amp;ref_ia)[4] : ia) See it live

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


【解决方案1】:

元素类型是一个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 << " ";
        }
    }
}

【讨论】:

  • 谢谢!我尝试做类似的事情,但我在做参考时一定错过了一些东西。
  • 可能要感谢 C 的awful declarator syntax ;)
【解决方案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 (&amp;ref_ia)[4] 是对四维数组或整数的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 2022-01-24
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多