在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++)
但是我希望增量是独立的而不是同步的。
答案 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
}
但是您的同事有可能最终恨您。