带有多个独立参数的C++For循环

C++ For Loop with multiple independent arguments

本文关键字:C++For 循环 参数 独立      更新时间:2023-10-16

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++)

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

以下是使用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

这是一个演示。

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

;嵌套循环";方法是正确的方法。

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

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

// some stuff        
}

但你的同事最终可能会讨厌你。