2010-06-22 28 views
9

Göründüğü bir yeri görüyorum:Döngü tuzaklar için C++ yineleyici?

for (itr = files.begin(); itr < files.end(); ++itr) // WRONG 
for (itr = files.begin(); itr != files.end(); ++itr) // ok 

Neden ilk ifade yanlış? Her zaman ilk ifadeyi kullandım ve herhangi bir problemim yoktu.

cevap

21

Sipariş karşılaştırmaları. != kullanarak daha sonra çok kodunu değiştirmek zorunda kalmadan kabını değiştirmek olabilir ve bu çok farklı konteyner tipleriyle çalışması gereken şablonu kodunun özellikle önemlidir.

7

Yineleyicilerin farklı türleri vardır. Yalnızca rastgele erişimli yineleyiciler, < operatörünü destekler. Diğer yineleyici türleri (çift yönlü, giriş, çıkış ve ileri) yok. Ancak tüm yineleyiciler, == ve != işleçlerini destekler. Eğer != kullanırsanız, bu nedenle kod Yineleyicilerin her türlü birlikte çalışacaktır.

5

eski sadece tüm yineleyiciler yapmak operator < destekleyen yineleyiciler için çalışır.