c ++ 11 — вводит ли C ++ 11 какие-либо новые способы выхода из вложенного цикла for?

Рассмотрим случай за внутри другого за

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 механизм для этого.

-3

Решение

Я думаю, что лучшим решением является использование итераторов и алгоритмов, таких как std::find_if,

11

Другие решения

Я думаю, что лучшее решение — использовать лямбду … примерно так:

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

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
}
0
По вопросам рекламы [email protected]