48
Eğer memoryManager 1000 öğe içeriyorsa, memoryManager.getItems()
çevrimin başında 1000 kez mi yoksa sadece bir kez mi çağrılıyor?Döngü koşulu için C++ 11 aralık temelli, her döngüde değerlendiriliyor mu?
Derleyici -O2 (veya -O3) ile herhangi bir optimizasyon çalıştırıyor mu?
(memoryManager.getItems()
döner bir
std::vector<Entity*>&
)
sonra (parantez içine) ekspresyon veya gerdirilmesi-init-listesi: eşdeğer olarak standart bir dizi-bazlı
for
deyimi tanımlar. ':' Bir ifadenin sağında, 'range-init' ifadesi, parantez içinde bulunan ifadedir. :) –@LightnessRacesinOrbit: Gerçekten. Ve, kimsenin neden önemli olduğunu düşünürse, "bu, üst düzey bir virgül operatörünün" __range "bildirgesinde init-declarators arasında bir sınırlayıcı olarak yeniden yorumlanmamasını sağlar. –
, "range-init" bir kez değerlendirilirken, "++ __ begin", her bir döngüde değerlendirilecek, böylece temel veri yapısı değiştiğinde, "range-init" iniz olduğu zaman temel veri yapısında olmayan değerler olabilir. Sonuç tanımlanmamış davranış da dahil olmak üzere "aralık için bildirme" ye atanır (örn. geçersizleştirilen iterörler). Sadece "bir kez değerlendirilen" ifadesinin, o anda güvenli bir şekilde üretilmekte olan tüm değerlere eşit olmadığını açıklığa kavuşturmak. –