对于顺序存储的容器(vector,deque),如果向容器中添加元素,或者删除元素,会导致内存的重新分配,从而使得迭代器或者指针失效。而对于list或者是forward_list因为内部采用指针的形式,所以即便插入元素,迭代器也不会失效。
因此不要保存end返回的迭代器
比如如下操作就是错误的
end = v.end();
begin = v.begin();
while(begin != end){
//插入操作。。
}
对于顺序存储的容器(vector,deque),如果向容器中添加元素,或者删除元素,会导致内存的重新分配,从而使得迭代器或者指针失效。而对于list或者是forward_list因为内部采用指针的形式,所以即便插入元素,迭代器也不会失效。
因此不要保存end返回的迭代器
比如如下操作就是错误的
end = v.end();
begin = v.begin();
while(begin != end){
//插入操作。。
}
本文标题:迭代器失效情况
本文链接:https://www.haomeiwen.com/subject/cuqbxttx.html
网友评论