4

在以下循环中,我使用了预先计算的结束迭代器:

std::list::iterator end = MyList.end();

for (std::list::iterator it = MyList.begin(); it != end ;) 
    it = MyList.erase(it);

擦除 std::list 中的元素时, MyList.end() 可以改变它的值end != MyList.end()吗?

4

1 回答 1

5

不。

n3376 23.3.5.4

iterator erase(const_iterator position);
iterator erase(const_iterator first, const_iterator last);

效果:仅使迭代器和对已擦除元素的引用无效。

于 2013-06-27T05:44:45.607 回答