Voici une autre réponse que personne ne semble avoir encore trouvée.  forles boucles doivent être utilisées lorsque vous devez parcourir une séquence . L'utilisation !=est la méthode la plus concise pour énoncer la condition de fin de la boucle. Cependant, l'utilisation d'un opérateur moins restrictif est un idiome de programmation défensive très courant. Pour les entiers, cela n'a pas d'importance - c'est juste un choix personnel sans exemple plus spécifique. Boucler les collections avec les itérateurs que vous souhaitez utiliser !=pour les raisons que d'autres ont indiquées. Si vous envisagez des séquences de floatou double, alors vous voulez éviter !=à tout prix.
Ce que je voulais souligner, c'est qu'il forest utilisé lorsque vous avez besoin d'itérer sur une séquence. La séquence générée a un point de départ, un intervalle et une condition de fin. Ceux-ci sont spécifiés de manière concise dans la fordéclaration. Si vous vous trouvez soit (1) n'incluant pas la partie étape du forou (2) spécifiant quelque chose comme truela condition de garde, alors vous ne devriez pas utiliser de forboucle!
La whileboucle est utilisée pour poursuivre le traitement lorsqu'une condition spécifique est remplie.   Si vous ne traitez pas une séquence, vous voudrez probablement une whileboucle à la place. Les arguments de la condition de garde sont similaires ici, mais la décision entre a whileet une forboucle doit être très consciente. La whileboucle est sous-estimée dans les cercles C ++ IMO.
Si vous fortraitez une collection d'éléments (une utilisation très courante en boucle), vous devriez vraiment utiliser une méthode plus spécialisée. Malheureusement, std::for_eachc'est assez douloureux en C ++ pour un certain nombre de raisons. Dans de nombreux cas, séparer le corps d'une forboucle dans une fonction autonome (bien que quelque peu douloureuse) donne une solution beaucoup plus propre.  Lorsque l'on travaille avec des collections, pensez std::for_each, std::transformou std::accumulate.   La mise en œuvre de nombreux algorithmes devient concise et limpide lorsqu'elle est exprimée de cette manière. Sans oublier que l'isolement du corps de la boucle dans une fonction / méthode séparée vous oblige à vous concentrer sur l'algorithme, ses exigences d'entrée et ses résultats.
Si vous utilisez Java, Python, Ruby ou même C ++ 0x , vous devez alors utiliser une boucle foreach de collecte appropriée . Au fur et à mesure que les compilateurs C ++ implémentent cette fonctionnalité, un certain nombre de forboucles disparaîtront, tout comme ces types de discussions.
               
              
int i = 10; while(i --> 0) { /* stuff */ }