我在这里疯了。我正在使用Visual Studio 2008,我不禁认为它有一个错误,或者我只是忘记了一些严重的基础知识。
似乎当我删除for循环的“初始化”(第一个字段)时,我的“后增量”(第三个字段)在循环体之前执行。
std::list<VideoTranscoderStats>::iterator videoStatsIter = mTranscoderStatisticsList.begin();
for(;videoStatsIter != mTranscoderStatisticsList.end();videoStatsIter++)
{
// do stuff
}
在调试时,我可以看到我在“do stuff”之前执行“videoStatsIter ++”,并且在for循环中测试条件之前也是如此。
另一方面,如果我将videoStatsIter的初始化移动到for循环语句的开头,一切正常。 “videoStatsIter ++”在for循环体后执行。