如何使用范围将这个 python for 循环转换为 C++?

cig*_*ien -18 c++ python for-loop

考虑这个for使用 a 的Python循环range

for i in range(n-2, -1, -1):
Run Code Online (Sandbox Code Playgroud)

随着循环迭代,i采用值n-2, n-3, 直到0

C++ 中的等效代码是什么?


这个问题几乎是从另一个已删除的问题中逐字复制的。

Vat*_*ani 7

C++ 中的等效代码:

for(int i = n-2 ; i > -1 ; i--) {
    ...
}
Run Code Online (Sandbox Code Playgroud)


cig*_*ien 6

虽然经典for(;;)循环可用于您可以想象的任何迭代,但您的特定循环可以像这样编写更易读:

namespace sv = std::views;

for (int i : sv::iota(0, n-1) | sv::reverse)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这是一个演示

为了完整起见,下面是经典for(;;)循环的样子:

for (int i = n-2; i > -1; --i)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这是更多的认知努力,正是因为我必须通过阅读语法在脑海中运行迭代。我发现第一个版本读起来更自然。

  • 对于曾经用 C 代码喂养的老恐龙来说,第二个版本看起来更加简单、自然和可读。但这只是一个品味问题...... (8认同)