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
}
但你的同事最终可能会讨厌你。