为什么vector扩容会导致迭代器失效
vector内存特性
vector的元素存储在连续内存中,迭代器本质是指向元素地址的指针。
扩容时,vector分配一块新的,更大的连续内存,将旧元素移动过去,然后释放旧内存。
旧内存地址失效,源迭代器指向的地址不再有元素。
扩容触发条件
当size()==capacity()时就触发扩容。
新内存与旧内存很可能地址不同。
结果
扩容后,所有基于旧内存的迭代器都失效
vector的元素存储在连续内存中,迭代器本质是指向元素地址的指针。
扩容时,vector分配一块新的,更大的连续内存,将旧元素移动过去,然后释放旧内存。
旧内存地址失效,源迭代器指向的地址不再有元素。
当size()==capacity()时就触发扩容。
新内存与旧内存很可能地址不同。
扩容后,所有基于旧内存的迭代器都失效