c++迭代器有效性问题

c++ iterator validity issue

本文关键字:问题 有效性 迭代器 c++      更新时间:2023-10-16

我从http://www.cplusplus.com/reference/vector/vector/insert/学习std::vector::insert代码的相关部分:

int main ()
{
  std::vector<int> myvector (3,100);
  std::vector<int>::iterator it;
  it = myvector.begin();
  it = myvector.insert ( it , 200 );
  myvector.insert (it,2,300);
  // "it" no longer valid, get a new one:
  it = myvector.begin();

为什么在.insert操作后迭代器无效?

从这个引用来看:

导致重新分配,如果新的大小()大于旧的容量()。如果新的size()大于capacity(),则所有迭代器和引用都无效。否则,只有插入点之前的迭代器和引用仍然有效。过端迭代器也失效。