自学内容网 自学内容网

vector迭代器的失效

1.vector的底层

vector的底层就是由三个指针构成的

iterator _start 这个指针指向vector数据起始位置。

iterator _finish这个指针指向vector数据的结束位置。

iterator _end_of_shorage这个指针指向vector容量的位置。

2.迭代器失效的种类

2.1扩容引发的迭代器失效

例:在vector<int>test中,insert在position位置插入了一个元素,导致的test发生异地扩容,这个时候position会变成一个野指针,test已经异地扩容了,插入之后的迭代器不要随便使用。

原理如图

insert会返回新插入位置的迭代器。

2.2删除引发的迭代器失效

例:在vector<int>test中,eraser在position位置删除了一个元素,删除元素会导致整个vector的元素向前挪动,从该位置向后的所有迭代器,全部失效。


原文地址:https://blog.csdn.net/W2155/article/details/135706893

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!