如何使用范围将这个 python for 循环转换为 C++?
Posted
技术标签:
【中文标题】如何使用范围将这个 python for 循环转换为 C++?【英文标题】:How can I convert this python for-loop using a range into C++? 【发布时间】:2021-03-07 07:54:22 【问题描述】:考虑使用range
的Python for
循环:
for i in range(n-2, -1, -1):
随着循环的迭代,i
取值n-2
、n-3
,直到0
。
C++ 中的等价代码是什么?
这个问题几乎是从另一个已删除的question 中逐字复制的。
【问题讨论】:
我看不出这对其他读者有什么用处,它的标题太笼统而无法真正显示在任何搜索中,然后 for 循环本身就是 c++ 的一个非常基本的构造 我还是看不出这和What's the best way to do a backwards loop in C/C#/C++?有什么不同 您的问题太宽泛了:您需要帮助确定 Python 的功能吗?你不知道如何编写 C++ 循环吗?这两个问题本身就表明您缺乏研究,因为它们在各自的语言中都是非常基本的问题。 @chepner 我不同意这个问题过于宽泛。我要求将单行 python 翻译成 C++,它的范围很窄。我认为这暗示我理解 python 循环的作用,但我很高兴在问题中澄清这一点。我完全同意这个问题表明缺乏研究努力。在这种情况下,请对该问题投反对票。但是,请注意,缺乏研究或问题是基本的事实并不是密切的原因。 这个问题正在the meta讨论 【参考方案1】:C++ 中的等效代码:
for(int i = n-2 ; i > -1 ; i--)
...
【讨论】:
【参考方案2】:虽然经典的 for(;;)
循环可用于您可以想象的任何迭代,但您的特定循环可以这样编写,更具可读性:
namespace sv = std::views;
for (int i : sv::iota(0, n-1) | sv::reverse)
// ...
这是demo。
为了完整起见,下面是经典的 for(;;)
循环的样子:
for (int i = n-2; i > -1; --i)
// ...
在我看来,这是更多的认知努力,正是因为我必须通过阅读语法在脑海中运行迭代。我发现第一个版本读起来更自然。
【讨论】:
对于曾经用 C 代码喂养过的老恐龙,第二个版本看起来更加简单、自然和可读。但这只是口味问题...... @SergeBallesta 是的,我完全同意。对于不熟悉经典版本的python程序员来说,这个版本可能更容易阅读。以上是关于如何使用范围将这个 python for 循环转换为 C++?的主要内容,如果未能解决你的问题,请参考以下文章