C kullanımına & döngü optimizasyonu
Bu gibi c kodu bir sürü görüyorum
for( const_iterator it = list.begin(),
const_iterator ite = list.end();
it != ite; it)
Daha kısa versiyonu aksine:
for( const_iterator it = list.begin();
it != list.end(); it)
Bu iki toplantı arasında hız olarak hiçbir fark olmayacak mı? Safça ilk liste bu yana biraz daha hızlı olacak.() son bir kez çağrılır. Ama yineleyici sabit olduğundan, derleyici bu test çemberin dışında, her iki emsal Kurul oluşturma çekecek gibi görünüyor.
CEVAP
İki sürümleri aynı değildir. İkinci versiyonu list.end() karşı yineleyici her zaman karşılaştırır ve list.end() veren ne döngü boyunca değişebilir. Şimdi elbette değiştiremezsiniz list ile const_iterator it; ama hiçbir şey engel kod içinde döngü sadece arama yöntemleri list doğrudan ve mutasyona uğradığını, hangi olabilir (bağlı olarak ne tür bir veri yapısı list) değişim sonunda yineleyici. Bu nedenle artık doğru son ne zaman yineleyici olabilir, çünkü bazı durumlarda hatalı son yineleyici önceden saklamak için olabilir.

'döngü için en hızlı yol boyunca ...
Neden diğerleri üzerinde bazı platform...
Döngü yapısı içindeki nesne yönelimli ...
Python döngü tersten endeksleri kullan...
Bir ters sırada Java'da her döngü için...