【C++】vector迭代器失效

一.迭代器失效原因

在STL中vector容器会存在迭代器失效,原因无非以下两种:

  • 1.使用容器内函数可能会进行扩容,从而开辟新空间,销毁旧空间,可能会导致迭代器指向非法空间,导致失效。
    Resize()/reserve()/insert()/assign()/push_back()等方法可能会扩容。
  • 2.清空空间导致迭代器失效
    clear()/resize(0)
  • 3.使用erase()进行循环同样会导致迭代器失效。

二.解决方法

每次扩容/删除后,重新给迭代器赋值即可。
erase()函数进行循环删除,使用:

it= v1.erase(it);

三.引用失效

引用失效与迭代器失效原因与解决方法相同。

发布了53 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43550839/article/details/102647947