私はここで完全に夢中になります。私は Visual Studio 2008 を使用していますが、バグがあると思わずにはいられません。そうでなければ、重大な基本事項をいくつか忘れてしまったのです。
for ループの「初期化」(最初のフィールド) を削除すると、「ポスト インクリメント」(3 番目のフィールド) がループ本体の前に実行されるようです。
std::list<VideoTranscoderStats>::iterator videoStatsIter = mTranscoderStatisticsList.begin();
for(;videoStatsIter != mTranscoderStatisticsList.end();videoStatsIter++)
{
// do stuff
}
デバッグすると、「do stuff」の前、および for ループで条件をテストする前に「videoStatsIter++」を実行していることがわかります。
一方、videoStatsIter の初期化を for ループ ステートメントの先頭に移動すると、すべて正常に動作します。forループの本体に続いて「videoStatsIter++」が実行されます。