在vector中,我们经常会使用迭代器iterator对vector中的元素进行索引,也经常需要将迭代器作为参数传递到vector的成员函数中,迭代器使用非常方便,但使用不当也会给我们带来巨大的麻烦,下面就深入分析vector迭代器失效的场景。
一、 push_back导致迭代器失效
vector在push_back的时候当容量不足时会触发扩容,导致整个vector重新申请内存,并且将原有的数据复制到新的内存中,并将原有内存释放,这自然是会导致迭代器失效的,因为迭代器所指的内存都已经被释放。 举例如下:
#include
using namesspace std;
#include
int main()
{
vector ta; //定义一个容器
ta.push_back(1);
ta.push_back(2);
vector::iterator it = ta.begin();
cout
ta.push_back(i);
}
vector::iterator it = ta.begin();
it += 5;
cout
ta.push_back(i);
}
vector::iterator it = ta.begin();
it += 5;
cout |