对于顺序存储的容器(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){
//插入操作。。
}