简单明了,有没有更简单的方法来重复一个块一定次数,而内部块不需要计数变量?当然,微不足道的解决方案是
for (int i = 0; i < repetitions; ++i) {
//do your thing, i is not used here
}
然而,现在我们有了range for、标准算法和其他复杂的结构来迭代容器,相比之下,这实际上开始感觉像是很多模板和细节,对于一个本应该更简单的情况。例如,我们根本不关心变量 i 等等。
最接近具体问题的事情是:当我遇到像上面那样的for循环时,我需要扫描代码块以查看 i 是否实际使用,还是仅仅是虚拟计数器。实际想要处理0到 repetitions - 1
之间的整数的for循环声明将看起来完全相同。因此,类似于repeat (n)
的结构将具有额外的语义信息,即所有迭代都将相同,除了潜在的副作用。
一个选择是制作一个模板
template<class functor>
repeat(functor fun, unsigned n) {
for (unsigned i = 0; i < n; ++i)
fun();
}
并且呼叫
repeat([&](){
//do your thing
}, repetitions)
但是这似乎对于一个简单的问题来说有点过度设计。这可以通过宏定义来使使用更加美观,但这肯定不会改变过度设计的感觉。
因此,一个有效的答案是我在这里追逐一只野鹅,并应该只使用老式的for循环与计数器。
任何标准的C++都可以,包括即将到来的标准。
相关问题,如如何在C++中创建循环以重复指定次数?和如何在C++中创建循环以重复指定次数?是初学者寻求某种方法来实现此目的,而我特别要求以一种现代化、干净和优雅的方式实现此目的。c++重复N次迭代非常接近,但这里的区别在于我要求任何替代方案,不一定包括std::
。
Perform something 5 times.
- user7860670