C++;具有多个独立参数的For循环 《C++》中有一种方法可以写类似的东西吗? for(int a1=0; a1<n;a1++) { for (int a2 = 0; a2 < m; a2++) { some stuff } } for(int a1=0;a1

C++;具有多个独立参数的For循环 《C++》中有一种方法可以写类似的东西吗? for(int a1=0; a1<n;a1++) { for (int a2 = 0; a2 < m; a2++) { some stuff } } for(int a1=0;a1,c++,for-loop,C++,For Loop,使用“嵌套循环”的方法是正确的 如果您真的想要密码,可以尝试: for(int i =0; i < n*m; i++) { int a1 = i % n; int a2 = i / n; // some stuff } for(int i=0;i

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

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

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

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

下面是一种使用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循环的作用。独立性是什么意思?嵌套for循环还不够吗?参数在函数中传递,通常用于函数。我不知道多个独立循环的确切含义是什么参数。具体取决于你正在做什么。也许你应该编辑这个问题,并询问如何简化/减少使用嵌套for循环的代码,或者问一个新问题做同样的事情。从描述你想要的行为的最简单方式开始。如果测试发现你真的需要快速,请担心快速。我有同事相信这种方法的专家们。我知道他们来自何方。但是,每当我们有新的实习生时,我们都会浪费大约一周的时间在range-v3上训练他们,而嵌套循环似乎是普遍理解的。@Jeffrey,这很公平。我并不是说这种风格适合在任何地方教授。但实习生们是否已经花了一些时间来学习呢熟悉循环?我发现这对初学者来说更容易教。无论如何,我只是分享一个选择:)是的,很高兴指出这一点。但最后一点是:-)。速度也慢多了:@Jeffrey-Hmm,我怀疑。在没有启用的情况下,没有任何测量点:)查看生成的代码,即使经过优化,此方法也更复杂-包括一些断言检查和异常-因此我看不到任何好处:对于不太熟悉它所做工作的任何人来说,代码可读性较差,并且性能滞后。
namespace rv = ranges::views;

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