Python有一个有趣的for语句,它允许您指定else子句。
在像这样的构造中:
for i in foo:
if bar(i):
break
else:
baz()else子句在for之后执行,但前提是for正常终止(而不是由break终止)。
我想知道在C++中是否有类似的东西?我可以使用for ... else吗?
发布于 2014-07-11 17:38:14
表达实际逻辑的更简单的方法是使用std::none_of
if (std::none_of(std::begin(foo), std::end(foo), bar))
baz();如果C++17的范围提案被接受,希望这将简化为:
if (std::none_of(foo, bar)) baz();发布于 2014-07-11 17:12:35
如果不介意使用goto,也可以通过以下方式完成。这节省了额外的if检查和更高的作用域变量声明。
for(int i = 0; i < foo; i++)
if(bar(i))
goto m_label;
baz();
m_label:
...发布于 2014-07-11 16:58:29
是的,您可以通过以下方式达到相同的效果:
auto it = std::begin(foo);
for (; it != std::end(foo); ++it)
if(bar(*it))
break;
if(it == std::end(foo))
baz();https://stackoverflow.com/questions/24693694
复制相似问题