Ecco un'altra risposta che nessuno sembra aver ancora trovato. È necessario utilizzare for
loops quando è necessario eseguire un'iterazione su una sequenza . L'utilizzo di !=
è il metodo più conciso per dichiarare la condizione di terminazione per il ciclo. Tuttavia, l'utilizzo di un operatore meno restrittivo è un idioma di programmazione difensivo molto comune. Per i numeri interi non importa - è solo una scelta personale senza un esempio più specifico. In loop su raccolte con iteratori che si desidera utilizzare !=
per i motivi indicati da altri. Se consideri le sequenze di float
o double
, allora vuoi evitare !=
a tutti i costi.
Quello che volevo sottolineare è che for
è usato quando è necessario iterare su una sequenza. La sequenza generata ha un punto di partenza, un intervallo e una condizione di terminazione. Questi sono specificati in modo conciso nell'istruzione for
. Se ti trovi (1) non includendo la porzione di passo di for
o (2) che specifica qualcosa come true
come condizione di guardia, allora non dovresti usare un ciclo for
!
Il ciclo while
viene utilizzato per continuare l'elaborazione mentre viene soddisfatta una condizione specifica. Se non stai elaborando una sequenza, probabilmente preferisci un ciclo while
. Gli argomenti della condizione di guardia sono simili qui, ma la decisione tra un ciclo while
e un ciclo for
dovrebbe essere molto consapevole. Il ciclo while
è sottovalutato nei cerchi C ++ IMO.
Se stai elaborando una raccolta di elementi (un utilizzo molto comune di for
-loop), allora dovresti davvero usare un metodo più specializzato. Sfortunatamente, std::for_each
è piuttosto doloroso in C ++ per una serie di motivi. In molti casi, la separazione del corpo di un ciclo for
in una funzione indipendente (sebbene alquanto dolorosa) risulta in una soluzione molto più pulita. Quando lavori con le raccolte, considera std::for_each
, std::transform
o std::accumulate
. L'implementazione di molti algoritmi diventa concisa e cristallina 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, i suoi requisiti di input e i suoi risultati.
Se stai usando Java, Python, Ruby o anche C ++ 0x , allora dovresti usare un ciclo appropriato di raccolta foreach . Poiché i compilatori C ++ implementano questa funzione, un certo numero di cicli for
scompariranno così come lo saranno questi tipi di discussioni.