48
for(auto& entity : memoryManager.getItems()) entity->update(mFrameTime);
memoryManagerに1000個の項目が含まれている場合、memoryManager.getItems()
はループの開始時に1000回または1回だけ呼び出されますか?C++ 11の範囲ベースのループ条件は、毎サイクル評価されますか?
-O2(または-O3)を使用して最適化を実行しますか?
それは一度だけ評価さ
後(括弧で囲まれた)発現又はブレース-INIT-リストである:に相当するような標準は、範囲ベース
for
ステートメントを定義します。 ':'の右が式である場合、 'range-init'はその式を括弧で囲んだものです。 :) –@ LightnessRacesinOrbit:確かに。なぜ誰かがそのようなことを気にしている場合には、 "これは、トップレベルのコンマ演算子がinit-declarator間の区切り文字として '__range'宣言で再解釈されないことを保証します。 –
'range-init'が一度エバリュエートされている間に' ++ __ begin'が各ループに評価されるので、根底にあるデータ構造が変更された場合、 'range-init'がエバリュエートされたとき、結果としての未定義の挙動(例えば、無効化されたイテレータ)を含む、「for-range-declaration」に割り当てられる。 "evaulated once"がその時点で安全に生成されているすべての値と同じではないことを明確にするだけです。 –