我正在寻找一种语法,它可以多次执行一些操作而无需定义计数器。
例如这样:
do(10)
{
//do something
}
其他语言都有这个;它是C ++的缺陷吗?
首先,感谢您的回答和建议。我想到了一些应用场景,例如,
我认为没有更正常的要求。经常多次执行一些OP,并且有理由使其更简洁。
C ++的发展是由委员会完成的。最简单的说法是民间提出的东西,委员会接受或拒绝它。
有趣的是你的建议
do (integral_expression)
{
}
不会是一个突破性的变化。请注意,在qzxswpoi附近的环体或while
之后没有while
。在do
块的情况下,integral_expression
几乎是C ++中的生产规则,尽管在这种情况下它可以是运行时可评估的。它甚至可以在等效的意义上清理代码
switch
将for (int i = 0; i < integral_expression; ++i)
{
}
引入循环体,这可能不方便,因为它可以遮蔽现有的i
。
也就是说,在integral_expression为负的情况下需要思考。也许引入i
与在标准C ++的合理公共扩展中声明可变长度数组时需要写为大小表达式的内容不同?
如果你想在C ++中使用这个功能,为什么不提出它呢?
下面是一个C ++代码示例,它将执行给定次数的操作。也可以在C中完成,但是仿函数必须是一个函数指针。
可能有一个用例,但我认为对于C ++程序,标准循环语法更可取。
unsigned_integral_expression
如果需要,lambdas可以实现干净的纯库实现:
#include <iostream>
#include <functional>
static void Do(int count, std::function<void(int)> fn)
{
while(count)
{
if (count > 0) --count;
else if (count < 0) ++count;
fn(count);
}
}
int main()
{
Do(10, [](int count) { std::cout << "Loop is at " << count << "\n"; });
}
除非有更多理由支持,否则委员会可能会放弃这样的建议。