İşte kimsenin henüz gelmemiş gibi göründüğü başka bir cevap. forBir dizi üzerinde yineleme yapmanız gerektiğinde döngüler kullanılmalıdır . Kullanımı !=, döngünün sonlandırma koşulunu belirtmek için en özlü yöntemdir. Ancak, daha az kısıtlayıcı bir operatör kullanmak çok yaygın bir savunma programlama deyimidir. Tamsayılar için önemli değil - bu daha spesifik bir örnek olmadan sadece kişisel bir seçimdir. !=Başkalarının belirttiği nedenlerden kullanmak istediğiniz yineleyicilerle koleksiyonların üzerinden geçerken . floatVeya dizilerini düşünüyorsanız double, o zaman ne !=pahasına olursa olsun kaçınmak istersiniz .
İşaret etmek istediğim, forbir dizi üzerinde yineleme yapmanız gerektiğinde kullanılan şey. Oluşturulan dizinin bir başlangıç noktası, bir aralığı ve bir sonlandırma koşulu vardır. Bunlar kesinlikle forbeyan içerisinde belirtilmiştir . Kendinizi ya da (1) forya da (2) truekoruyucu koşulu gibi bir şey belirten adım bölümünü içermeyen buluyorsanız , bir fordöngü kullanmamalısınız !
whileDöngü, belirli bir durum karşılamakta olup işleme devam etmek için kullanılır. Bir diziyi işlemiyorsanız, muhtemelen whilebunun yerine bir döngü istiyorsunuz . Bekçi koşulu argümanları burada benzer, ancak a whileve forloop arasındaki karar çok bilinçli olmalıdır. whileIMO C ++ çevrelerinde altında takdir döngüdür.
Bir öğe koleksiyonunu (çok yaygın bir fordöngü kullanımı) işliyorsanız, gerçekten daha özel bir yöntem kullanmalısınız. Ne yazık ki, std::for_eachC ++ 'da bir çok sebepten dolayı oldukça acı verici. Birçok durumda, bir forilmek gövdesini serbest duran bir fonksiyonda (biraz ağrılı iken) ayırmak, daha temiz bir çözelti ile sonuçlanır. Koleksiyonları ile çalışırken, düşünün std::for_each, std::transformya std::accumulate. Birçok algoritmanın uygulanması, bu şekilde ifade edildiğinde kısa ve netleşir. Döngünün gövdesini ayrı bir işleve / yönteme ayırmanın sizi algoritmaya, giriş gereksinimlerine ve sonuçlarına odaklanmaya zorladığından bahsetmiyorum.
Java, Python, Ruby, hatta kullanıyorsanız C ++ 0x , o zaman uygun bir koleksiyon kullanarak olmalıdır foreach döngü. C ++ derleyicileri bu özelliği uygularken for, bu tür tartışmalarda olduğu gibi çok sayıda döngü kaybolacaktır.
int i = 10; while(i --> 0) { /* stuff */ }