擦除时std :: list end()迭代器位置是否会改变?

时间:2013-06-27 05:40:56

标签: c++ iterator containers erase

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

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()

1 个答案:

答案 0 :(得分:5)

没有

n3376 23.3.5.4

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

效果:仅使迭代器无效并将引用到已擦除的元素。