c++ - 删除时 std::list end() 迭代器位置是否改变?

标签 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() 不再存在?

最佳答案

没有。

n3376 23.3.5.4

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

Effects: Invalidates only the iterators and references to the erased elements.

关于c++ - 删除时 std::list end() 迭代器位置是否改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17335313/

相关文章:

c++ - 模板 - 以列出的参数为条件

c++ - 从多个线程更新对应于 unordred_map 中不同现有键的值

c++ - 运算符 "!="不匹配(c++ 迭代器)

html - 我想要一个 bootstrap "content"容器有两个容器,一个固定高度,一个有百分比

ios - 容器 View 中的 Split View失去导航 Controller 的功能

c++ - 在多大程度上允许将 C 和 C++ 结合使用?

c++ - Qt Quick ui形式不支持功能

haskell - 使用 ContT 的列表迭代器

python从迭代返回数组

c++ - 动态更改/选择类成员变量的类型