-3

考虑一个for在另一个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 是否引入了一种机制来做到这一点。

4

3 回答 3

11

我认为最好的解决方案是使用迭代器和算法,例如std::find_if.

于 2013-04-26T14:25:34.513 回答
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
}
于 2013-04-26T14:23:49.750 回答
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
}
于 2013-04-27T13:50:39.817 回答