這段代碼不應該進入無限循環嗎?不應該從stl :: list像這樣去掉無限循環?
list<int>val;
val.push_back(0);
list<int>::iterator iter,iterEnd;
iter = val.begin();
int i;
for (; iter != val.end();)
{
i = *iter;
if(i==0)
{
val.erase(iter++);
}
else iter++;
}
因爲它有做擦除,然後遞增迭代之後只有一個值,不應迭代超過值val.end(),然後陷入無限循環?但是當我運行它時,它運行得很好!任何人都可以解釋嗎?謝謝。
'目錄:: erase'並不能否定任何其他迭代器除了一個被刪除。 –