Aquí hay otra respuesta que nadie parece haber llegado todavía. for
Los bucles deben usarse cuando necesita iterar sobre una secuencia . El uso !=
es el método más conciso para establecer la condición de terminación del bucle. Sin embargo, el uso de un operador menos restrictivo es un lenguaje de programación defensiva muy común. Para los enteros no importa: es solo una elección personal sin un ejemplo más específico. Recorrer colecciones con iteradores que desea usar !=
por las razones que otros han declarado. Si considera secuencias de float
o double
, entonces desea evitar !=
a toda costa.
Lo que quería señalar es que for
se usa cuando necesita iterar sobre una secuencia. La secuencia generada tiene un punto de inicio, un intervalo y una condición de finalización. Estos se especifican de manera concisa dentro de la for
declaración. Si se encuentra (1) sin incluir la parte del paso delfor
(2) especificando algo true
como la condición de protección, entonces no debería estar usando un for
bucle.
El while
bucle se utiliza para continuar procesando mientras se cumple una condición específica. Si no está procesando una secuencia, entonces probablemente desee un while
bucle. Los argumentos de la condición de guardia son similares aquí, pero la decisión entre a while
y un for
bucle debe ser muy consciente. El while
bucle se subestima en los círculos de C ++ IMO.
Si está procesando una colección de elementos (un for
uso de bucle muy común ), entonces realmente debería usar un método más especializado. Desafortunadamente, std::for_each
es bastante doloroso en C ++ por varias razones. En muchos casos, la separación del cuerpo de un for
bucle en una función independiente (aunque algo dolorosa) da como resultado una solución mucho más limpia. Cuando trabaje con colecciones, considere std::for_each
,std::transform
o std::accumulate
. La implementación de muchos algoritmos se vuelve concisa y clara como el cristal cuando se expresa de esta manera. Sin mencionar que aislar el cuerpo del bucle en una función / método separado lo obliga a concentrarse en el algoritmo, sus requisitos de entrada y resultados.
Si está utilizando Java, Python, Ruby o incluso C ++ 0x , entonces debería estar utilizando una colección foreach loop adecuada . A medida que los compiladores de C ++ implementen esta característica, for
desaparecerán varios bucles y este tipo de discusiones.
int i = 10; while(i --> 0) { /* stuff */ }