在其他
中考虑 的情况int f( ... )
{
for (int i = start_a; i < end_a; i++)
{
for (int j = start_b; j < end_b; j++)
{
// make some computation
if( i_must_exit == true)
{
// exit from all for
}
}
}
// I want arrive here
}
我们想要从两个for
循环中断。如果不分解内部函数,抛出异常等,在C ++ 03中这并不容易。我想知道C ++ 11是否引入了一种机制来实现这一点。
答案 0 :(得分:11)
我认为最好的解决方案是使用迭代器和算法,例如std::find_if
。
答案 1 :(得分:2)
我认为最好的解决方案是使用lambda ......就像这样:
int f()
{
[&]{
for (int i = start; i < end; i++)
{
for (int j = start_; j < end_; j++)
{
// make some computation
if( i_must_exit == true)
{
// exit from all for
return;
}
}
}
}(); // execute this code now!
// continue with computation
}
答案 2 :(得分:0)
int f( ... )
{
bool b = false;
for (int i = start_a; i < end_a; i++)
{
for (int j = start_b; j < end_b; j++)
{
// make some computation
if( i_must_exit == true)
{
b = true;
break;
}
}
if (b)
break;
}
// I want arrive here
}