Ecco un'altra risposta che nessuno sembra aver ancora trovato. for
i 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 float
o double
, si desidera evitare !=
a tutti i costi.
Quello che volevo sottolineare è che for
viene 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 for
o (2) specificando qualcosa come true
la condizione di guardia, allora non dovresti usare un for
loop!
Il while
ciclo viene utilizzato per continuare l'elaborazione mentre viene soddisfatta una condizione specifica. Se non stai elaborando una sequenza, probabilmente vorrai while
invece un ciclo. Gli argomenti della condizione di guardia sono simili qui, ma la decisione tra a while
e un for
loop dovrebbe essere molto consapevole. Il while
ciclo è sottovalutato nei circoli C ++ IMO.
Se stai elaborando una raccolta di elementi (un for
utilizzo 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 for
anello 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::transform
o 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 for
loop scompare così come questi tipi di discussioni.
int i = 10; while(i --> 0) { /* stuff */ }