127 votes

Comment sortir des boucles imbriquées ?

Si j'utilise une break , cela ne brisera que la boucle interne et je dois utiliser un indicateur pour briser la boucle externe. Mais s'il y a beaucoup de boucles imbriquées, le code n'aura pas l'air bien.

Existe-t-il un autre moyen de briser toutes les boucles? (Veuillez ne pas utiliser goto stmt .)

 for(int i = 0; i < 1000; i++) {
   for(int j = 0; j < 1000; j++) {
       if(condition) {
            // both of the loops need to break and control will go to stmt2
       }
   }

}

stmt2

48voto

Tung Points 2613
bool stop = false;
for (int i = 0; (i < 1000) && !stop; i++)
{
    for (int j = 0; (j < 1000) && !stop; j++)
    {
        if (condition)
            stop = true;
    }
}

46voto

Jay Points 8393

Une façon consiste à mettre toutes les boucles imbriquées dans une fonction et à revenir de la boucle la plus interne en cas de besoin de sortir de toutes les boucles.

 function() 
{    
  for(int i=0; i<1000; i++)
  {
   for(int j=0; j<1000;j++)
   {
      if (condition)
        return;
   }
  }    
}

25voto

Renjith K N Points 2477

Je pense que goto résoudra le problème

 for(int i = 0; i < 1000; i++) {
    for(int j = 0; j < 1000; j++) {
        if (condition) {
            goto end;
        }
    }
}

end:
stmt2 

 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X