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?
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?
Nur um eine explizite Antwort mit Lambdas hinzuzufügen:
for (int i = 0; i < n1; ++i) {
[&] {
for (int j = 0; j < n2; ++j) {
for (int k = 0; k < n3; ++k) {
return; // yay we're breaking out of 2 loops here
}
}
}();
}
Natürlich hat dieses Muster eine gewisse Einschränkung und offensichtlich nur C++11, aber ich denke, es ist ziemlich nützlich.
Ein anderer Ansatz, um aus einer verschachtelten Schleife auszubrechen, besteht darin, beide Schleifen in eine separate Funktion zu faktorisieren, und return
aus dieser Funktion, wenn Sie sie verlassen wollen.
Dies wirft natürlich die andere Frage auf, ob man jemals ausdrücklich return
aus einer Funktion an einer anderen Stelle als am Ende.
Pause verlässt nur die innerste Schleife, die sie enthält.
Sie können verwenden siehe um aus einer beliebigen Anzahl von Schleifen auszubrechen.
Natürlich siehe ist oft Als schädlich angesehen .
Ist es richtig, die Funktion break[...] zu verwenden?
Die Verwendung von break und goto kann es erschweren, Aussagen über die Korrektheit eines Programms zu treffen. Siehe hier für eine Diskussion zu diesem Thema: Dijkstra war nicht wahnsinnig .
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.