首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Objective-C中打破两个嵌套的for循环?

如何在Objective-C中打破两个嵌套的for循环?
EN

Stack Overflow用户
提问于 2009-05-14 12:55:54
回答 13查看 62.8K关注 0票数 75

我有两个这样嵌套的for循环:

for(...) {
    for(...) {

    }
}

我知道有一个break语句。但我搞不懂它是中断了两个循环,还是只中断了被调用的那个循环?一旦我发现迭代更多的次数是没有意义的,我就需要同时打破这两种方法。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-05-14 12:59:09

break会中断一个循环,但您可以向外部循环添加检查,该检查会在内部循环中断时中断。

bool dobreak = false;
for ( ..; !dobreak && ..; .. ) {
   for ( ... ) {
      if (...) {
         dobreak = true;
         break;
      }
   }
}
票数 94
EN

Stack Overflow用户

发布于 2009-05-14 13:40:25

如果使用goto简化了代码,那么它将是合适的。

for (;;) 
{
    for (;;) 
    {
        break; /* breaks inner loop */
    } 
    for (;;) 
    {
        goto outer; /* breaks outer loop */
    }
} 
outer:;
票数 109
EN

Stack Overflow用户

发布于 2009-05-14 13:13:50

break语句只能让您跳出最内层的循环。如果您不希望在代码、内存和专用状态变量的性能方面增加额外的开销,我建议将代码重构为它自己的函数或方法,并使用return来摆脱所有循环:

void do_lots_of_work(void)
{
  int i, j;

  for(i=0; i<10 ; i++)
  {
    for(j=0;j< 10; j++)
    {
     ..
     ..
     if(disaster_struck())
      return; /* Gets us out of the loops, and the function too. */
    }
  }
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/863172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档