Ecco un'altra risposta che nessuno sembra aver ancora trovato. fori loop devono essere utilizzati quando è necessario scorrere su una sequenza . L'utilizzo !=è il metodo più conciso per affermare la condizione di terminazione per il loop. Tuttavia, l'utilizzo di un operatore meno restrittivo è un linguaggio di programmazione difensiva molto comune. Per i numeri interi non importa: è solo una scelta personale senza un esempio più specifico. Passare in rassegna le raccolte con gli iteratori che si desidera utilizzare !=per le ragioni che altri hanno affermato. Se si considerano sequenze di floato double, si desidera evitare !=a tutti i costi.
Quello che volevo sottolineare è che forviene utilizzato quando è necessario iterare su una sequenza. La sequenza generata ha un punto iniziale, un intervallo e una condizione finale. Questi sono concisamente specificati nell'istruzione for. Se ti accorgi che (1) non include la porzione di passaggio di foro (2) specificando qualcosa come truela condizione di guardia, allora non dovresti usare un forloop!
Il whileciclo viene utilizzato per continuare l'elaborazione mentre viene soddisfatta una condizione specifica. Se non stai elaborando una sequenza, probabilmente vorrai whileinvece un ciclo. Gli argomenti della condizione di guardia sono simili qui, ma la decisione tra a whilee un forloop dovrebbe essere molto consapevole. Il whileciclo è sottovalutato nei circoli C ++ IMO.
Se stai elaborando una raccolta di elementi (un forutilizzo molto comune del loop), dovresti davvero utilizzare un metodo più specializzato. Sfortunatamente, std::for_eachè abbastanza doloroso in C ++ per una serie di ragioni. In molti casi, separare il corpo di un foranello in una funzione indipendente (sebbene un po 'dolorosa) si traduce in una soluzione molto più pulita. Quando si lavora con le collezioni, in considerazione std::for_each, std::transformo std::accumulate. L'implementazione di molti algoritmi diventa concisa e chiara quando espressa in questo modo. Per non parlare del fatto che isolare il corpo del loop in una funzione / metodo separato ti costringe a concentrarti sull'algoritmo, sui suoi requisiti di input e sui risultati.
Se stai usando Java, Python, Ruby o anche C ++ 0x , allora dovresti usare un ciclo foreach di raccolta appropriato . Man mano che i compilatori C ++ implementano questa funzione, un certo numero di forloop scompare così come questi tipi di discussioni.
int i = 10; while(i --> 0) { /* stuff */ }