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的元素向前挪动,从该位置向后的所有迭代器,全部失效。