426 Stimmen

Kann ich break verwenden, um mehrere verschachtelte 'for'-Schleifen zu beenden?

Ist es möglich, die break Funktion zum Verlassen mehrerer verschachtelter for Schleifen?

Wenn ja, wie würden Sie dabei vorgehen? Können Sie auch kontrollieren, wie viele Schleifen die break Ausgänge?

0voto

Patrick Glandien Punkte 7601

Andere Sprachen wie z.B. PHP akzeptieren einen Parameter für break (z.B. break 2;), um die Anzahl der verschachtelten Schleifenstufen anzugeben, aus denen man ausbrechen möchte, C++ hingegen nicht. Sie müssen dies mit Hilfe eines booleschen Wertes lösen, den Sie vor der Schleife auf false setzen, in der Schleife auf true, wenn Sie abbrechen wollen, und mit einem bedingten Break nach der verschachtelten Schleife, wobei Sie prüfen, ob der boolesche Wert auf true gesetzt wurde, und wenn ja, abbrechen.

-1voto

Aditya Jagtap Punkte 76

Ich weiß, dies ist ein alter Beitrag. Aber ich würde eine etwas logischere und einfachere Antwort vorschlagen.

for(unsigned int i=0; i < 50; i++)
    {
        for(unsigned int j=0; j < conditionj; j++)
        {
            for(unsigned int k=0; k< conditionk ; k++)
            {
                // If condition is true

                j= conditionj;
               break;
            }
        }
    }

-1voto

MEnnabah Punkte 2005
  while (i<n) {
    bool shouldBreakOuter = false;
    for (int j=i + 1; j<n; ++j) {
      if (someCondition) {
          shouldBreakOuter = true;
      }
    }

    if (shouldBreakOuter == true)
      break;

  }

-1voto

Vikas Bansal Punkte 1290

Unterbrechen Sie eine beliebige Anzahl von Schleifen um nur eine bool Variable siehe unten:

bool check = true;

for (unsigned int i = 0; i < 50; i++)
{
    for (unsigned int j = 0; j < 50; j++)
    {
        for (unsigned int k = 0; k < 50; k++)
        {
            //Some statement
            if (condition)
            {
                check = false;
                break;
            }
        }
        if (!check)
        {
            break;
        }
    }
    if (!check)
    {
        break;
    }
}

In diesem Code wird break; alle Schleifen.

-3voto

lawilog Punkte 173

Sie können try...catch verwenden.

try {
    for(int i=0; i<10; ++i) {
        for(int j=0; j<10; ++j) {
            if(i*j == 42)
                throw 0; // this is something like "break 2"
        }
    }
}
catch(int e) {} // just do nothing
// just continue with other code

Wenn Sie aus mehreren Schleifen auf einmal ausbrechen müssen, ist das oft ohnehin eine Ausnahme.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X