具有多个独立参数的C ++ For Loop

时间:2020-07-08 17:30:14

标签: c++ for-loop

在C ++中有没有一种写类似的东西

    for(int a1=0; a1<n;a1++)
    { 
        for (int a2 = 0; a2 < m; a2++)
        {
          some stuff
        }
        
    }

在一个循环中。我已经看过类似的东西

for(int i =0, int j=0; i<n && j<m; i++,j++)

但是我希望增量是独立的而不是同步的。

2 个答案:

答案 0 :(得分:3)

这是使用range-v3的一种方法:

namespace rv = ranges::views;

for (auto [a1, a2] : rv::cartesian_product(rv::iota(0, n), rv::iota(0, m)))
  // use a1 and a2

这里是demo

您可以通过向rv::cartesian_product添加更多参数来将其扩展到更深层次的嵌套。

答案 1 :(得分:0)

“嵌套循环”方法是正确的方法。

如果您真的想要密码,可以尝试:

for(int i =0; i < n*m; i++)
{ 
    int a1 = i % n;
    int a2 = i / n;
     
    // some stuff        
}

但是您的同事有可能最终恨您。