迭代器小结
每次修改容器的时候,可能会改变容器本身,需要重新获取迭代器
1
2
3
4
5
6
7
8vector<int>::iterator p=a.begin();
a.insert(p+1,1);
p = a.begin();
……
p = a.begin();
a.erase(p,p+5);
p = a.begin();
-------------------------------在这里,p应该就是指向第一个元素的迭代器,但为什么我们还要重置呢?当我们插入或者是删除元素时,是有可能改变容器本身的,就比如,他可能会迁移到其他地方,就算不迁移到其他地方,不管是插入元素或者是删除元素,也足以令一部分迭代器失效,所以,如果我们不重置p的话,我们接下来使用的会是无效的迭代器,这足以令程序宕掉,所以,为了安全起见,无论我们是插入元素还是删除元素,当我们要用迭代器时,就记得重迭代器
定义了迭代器,但没有将迭代器绑定到对象上,不能使用该迭代器
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!