c ++迭代器有效性问题

时间:2015-08-07 08:50:30

标签: c++ iterator

我正在从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操作后迭代器无效?

1 个答案:

答案 0 :(得分:3)

来自this reference它说:

  

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