Hier ist eine weitere Antwort, die noch niemand gefunden zu haben scheint. forSchleifen 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 floatoder berücksichtigen double, dann möchten Sie dies unbedingt vermeiden !=.
Was ich darauf hinweisen wollte, ist, dass fores 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 forErklärung kurz angegeben. Wenn Sie feststellen, dass Sie entweder (1) den Step-Teil von foroder (2) so etwas wie truedie Guard-Bedingung nicht angeben, sollten Sie keine forSchleife verwenden!
Die whileSchleife wird verwendet, um die Verarbeitung fortzusetzen, solange eine bestimmte Bedingung erfüllt ist. Wenn Sie keine Sequenz verarbeiten, möchten Sie wahrscheinlich whilestattdessen eine Schleife. Die Argumente für die Schutzbedingung sind hier ähnlich, aber die Entscheidung zwischen a whileund einer forSchleife sollte sehr bewusst sein. Die whileSchleife wird in C ++ - Kreisen IMO unterschätzt.
Wenn Sie eine Sammlung von Elementen verarbeiten (eine sehr häufige forVerwendung von Schleifen), sollten Sie wirklich eine spezialisiertere Methode verwenden. Leider std::for_eachist in C ++ aus mehreren Gründen ziemlich schmerzhaft. In vielen Fällen führt das Trennen des Körpers einer forSchleife 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::transformoder 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, forverschwinden eine Reihe von Schleifen sowie diese Art von Diskussionen.
int i = 10; while(i --> 0) { /* stuff */ }