C++:erase删除容器中元素
发布网友
发布时间:2022-04-23 05:01
我来回答
共2个回答
热心网友
时间:2023-11-03 05:33
这地方改一下:
if ( *iter == 3 )
{
iter = vec.erase( iter );
}
或者
if ( *iter == 3 )
{
vec.erase( iter );
break;
}
iter原先指向3这个元素,使用erase之后,这个迭代器失效了,所以在下次循环else这个语句块内,
++iter是非法的。
热心网友
时间:2023-11-03 05:33
erase()函数的功能是用来删除容器中的元素。
函数原型:
iterator erase(iterator where);
iterator erase(iterator first,iterator last);
basic_string& erase(size_type p0=0,size_type n=np);
删除某个容器里的某个元素:c.erase(T);
链表容器以list为例,执行container.erase(it)。
list<int>::iterator it;
for (it = lt.begin(); it != lt.end(); ) {
if (*it % 2 == 0)
lt.erase(it++);
else
++it;
}