迭代器在以下情况后失效:
string b "Some string";
auto beg_ = b.begin();
auto end_ = b.end();
b.erase(beg_);
答案 0 :(得分:5)
是的,但是erase会返回一个有效的迭代器,你可以用它继续循环:
对于其余成员, function返回member的迭代器 type string :: iterator引用 现在占据的角色 第一个角色的位置 擦除,或者,如果没有这样的字符 存在,返回end()。
答案 1 :(得分:1)
是的,标准说
引用
basic_string
序列元素的引用,指针和迭代器可能无效 通过basic_string
对象的以下用法:
- 调用非const成员函数,
operator[]()
,at()
,begin()
,rbegin()
,end()
和rend()
除外。
答案 2 :(得分:1)
是
http://www.sgi.com/tech/stl/basic_string.html
迭代可能会使迭代器失效, 保留,插入和擦除(以及通过 功能相当于 插入和/或擦除,如清除, 调整大小,追加和替换)。 另外,第一次通话 任何非const成员函数, 包括非const版本的 begin()或operator []可能会失效 迭代器。
答案 3 :(得分:1)
据我所知,是的。 擦除和插入操作使迭代器无效。
但是erase(迭代器)也会返回一个你可以使用的迭代器。