相关疑难解决方法(0)

重复代码设定次数的现代 C++ 方法

很简单,有没有更简单的方法来重复一个块一定次数,其中块里面不需要计数器变量?微不足道的解决方案当然是

for (int i = 0; i < repetitions; ++i) {
  //do your thing, i is not used here
}
Run Code Online (Sandbox Code Playgroud)

然而,既然我们已经研究了用于迭代容器的标准算法和其他奇特的构造,相比之下,这实际上开始让人觉得有很多样板和细节,这应该是一个更简单的案例。例如,我们对变量根本不感兴趣i等等。

最接近具体问题的是:当我遇到像上面这样的 for 循环时,我需要扫描代码块以查看是否i实际使用,或者它是否只是一个虚拟计数器。实际上想要对整数 0 执行某些操作的 for 循环的声明repetitions - 1看起来相同。因此,一个repeat (n)-type 构造将具有额外的语义信息,即所有迭代都将相同,除了潜在的副作用。

一种选择是制作模板

template<class functor>
repeat(functor fun, unsigned n) {
   for (unsigned i = 0; i < n; ++i)
     fun();
}
Run Code Online (Sandbox Code Playgroud)

并打电话

repeat([&](){
  //do your thing
}, repetitions)
Run Code Online (Sandbox Code Playgroud)

但这对于一个简单的问题来说似乎真的是过度设计的矫枉过正。这可以被宏观化以使使用更好一点,但这肯定无助于过度设计的感觉。

所以一个有效的答案是,我在这里大吃一惊,应该只使用带有计数器的旧 for 循环。

任何标准 C++ 都可以,包括即将推出的标准。

相关问题,例如如何在 C++ 中创建循环一定次数的循环? 以及如何在 C++ …

c++ loops c++17 c++20

5
推荐指数
2
解决办法
7180
查看次数

标签 统计

c++ ×1

c++17 ×1

c++20 ×1

loops ×1