Hier ist eine weitere Antwort, die noch niemand gefunden zu haben scheint. for
Schleifen sollten verwendet werden, wenn Sie eine Sequenz durchlaufen müssen . Verwenden !=
ist die präziseste Methode, um die Abschlussbedingung für die Schleife anzugeben. Die Verwendung eines weniger restriktiven Operators ist jedoch eine sehr verbreitete Defensiv-Programmiersprache. Für ganze Zahlen spielt es keine Rolle - es ist nur eine persönliche Wahl ohne ein spezifischeres Beispiel. Durchlaufen Sie Sammlungen mit Iteratoren, die Sie !=
aus den von anderen angegebenen Gründen verwenden möchten . Wenn Sie Sequenzen von float
oder berücksichtigen double
, dann möchten Sie dies unbedingt vermeiden !=
.
Was ich darauf hinweisen wollte, ist, dass for
es verwendet wird, wenn Sie über eine Sequenz iterieren müssen. Die generierte Sequenz hat einen Startpunkt, ein Intervall und eine Abbruchbedingung. Diese sind in der for
Erklärung kurz angegeben. Wenn Sie feststellen, dass Sie entweder (1) den Step-Teil von for
oder (2) so etwas wie true
die Guard-Bedingung nicht angeben, sollten Sie keine for
Schleife verwenden!
Die while
Schleife wird verwendet, um die Verarbeitung fortzusetzen, solange eine bestimmte Bedingung erfüllt ist. Wenn Sie keine Sequenz verarbeiten, möchten Sie wahrscheinlich while
stattdessen eine Schleife. Die Argumente für die Schutzbedingung sind hier ähnlich, aber die Entscheidung zwischen a while
und einer for
Schleife sollte sehr bewusst sein. Die while
Schleife wird in C ++ - Kreisen IMO unterschätzt.
Wenn Sie eine Sammlung von Elementen verarbeiten (eine sehr häufige for
Verwendung von Schleifen), sollten Sie wirklich eine spezialisiertere Methode verwenden. Leider std::for_each
ist in C ++ aus mehreren Gründen ziemlich schmerzhaft. In vielen Fällen führt das Trennen des Körpers einer for
Schleife in einer freistehenden Funktion (obwohl dies etwas schmerzhaft ist) zu einer viel saubereren Lösung. Wenn sie mit Sammlungen arbeiten, betrachten std::for_each
, std::transform
oder std::accumulate
. Die Implementierung vieler Algorithmen wird auf diese Weise präzise und kristallklar. Ganz zu schweigen davon, dass Sie sich beim Isolieren des Schleifenkörpers in eine separate Funktion / Methode auf den Algorithmus, seine Eingabeanforderungen und Ergebnisse konzentrieren müssen.
Wenn Sie Java, Python, Ruby oder sogar C ++ 0x verwenden , sollten Sie eine geeignete Auflistung für jede Schleife verwenden. Wenn C ++ - Compiler diese Funktion implementieren, for
verschwinden eine Reihe von Schleifen sowie diese Art von Diskussionen.
int i = 10; while(i --> 0) { /* stuff */ }