[C++]迭代器失效

迭代器失效

先看一段代码

#include <iostream>
#include <vector>
#include <set>




int main() {
  int cnt = 0;
  std::set<int> s{1,4};
  std::vector<int> vec{0,1,2,3,4,5,6,7,8,9};
  for (auto iter = vec.begin(); iter != vec.end();) {
    std::cout << "iter: " << *iter << std::endl;
    if (s.count(*iter)) {
      vec.erase(iter++);
      std::cout << "now: " << *iter << std::endl;
    } else {
      ++iter;
    }
  }

  for (auto &it : vec) {
    std::cout << it << std::endl;
  }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今个试了下vector的插入和删除操作: C++提供的函数 vector插入和删除push_back(ele); ...
    ULis阅读 682评论 0 1
  • 对容器的操作影响了元素的存放位置,称为迭代器失效。下面是一些常见的迭代器失效情况 vector 插入一个元素后,e...
    863cda997e42阅读 1,993评论 0 2
  • 以下这段话来自《C++标准程序库》—第六章STL容器“vector迭代器失效发生在下列两种情况(1)使用者在一个较...
    iDucky131阅读 808评论 0 1
  • 先看一段代码: 乍一看好像没什么问题,但是这段代码是错误的。iter是指向vector这个容器中的某个元素,如果不...
    Yankee_13阅读 641评论 0 0
  • 一、概述 迭代器是c++中一种检查容器内元素并遍历元素的数据类型。迭代器提供对一个容器中的对象的访问方法,并且定义...
    wade_f193阅读 2,110评论 0 1