İşte kimsenin henüz gelmemiş gibi göründüğü başka bir cevap. for
Bir 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 . float
Veya dizilerini düşünüyorsanız double
, o zaman ne !=
pahasına olursa olsun kaçınmak istersiniz .
İşaret etmek istediğim, for
bir 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 for
beyan içerisinde belirtilmiştir . Kendinizi ya da (1) for
ya da (2) true
koruyucu koşulu gibi bir şey belirten adım bölümünü içermeyen buluyorsanız , bir for
döngü kullanmamalısınız !
while
Döngü, belirli bir durum karşılamakta olup işleme devam etmek için kullanılır. Bir diziyi işlemiyorsanız, muhtemelen while
bunun yerine bir döngü istiyorsunuz . Bekçi koşulu argümanları burada benzer, ancak a while
ve for
loop arasındaki karar çok bilinçli olmalıdır. while
IMO C ++ çevrelerinde altında takdir döngüdür.
Bir öğe koleksiyonunu (çok yaygın bir for
döngü kullanımı) işliyorsanız, gerçekten daha özel bir yöntem kullanmalısınız. Ne yazık ki, std::for_each
C ++ 'da bir çok sebepten dolayı oldukça acı verici. Birçok durumda, bir for
ilmek 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::transform
ya 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 */ }