美文网首页CPP
使用迭代器删除序列性容器和关联性容器元素

使用迭代器删除序列性容器和关联性容器元素

作者: 顽强的猫尾草 | 来源:发表于2018-01-18 21:20 被阅读12次

1、关联性容器(map 和 set 等)
erase 迭代器只使被删元素的迭代器失效,但是返回值为 void,所以要采用 erase(iter++) 的方式删除迭代器,因此正确方法为:

for( iter = c.begin(); iter != c.end(); )  
    c.erase(iter++);

2、序列性容器(vector、list 和 deque 等)
erase 迭代器不仅使所指向被删元素的迭代器失效,而且使被删元素之后的所有迭代器失效,所以不能使用 erase(iter++) 的方式,但是 erase 的返回值为下一个有效的迭代器,所以正确方法为:

for( iter = c.begin(); iter != c.end(); )
    iter = c.erase(iter);

相关文章

  • 使用迭代器删除序列性容器和关联性容器元素

    1、关联性容器(map 和 set 等)erase 迭代器只使被删元素的迭代器失效,但是返回值为 void,所以要...

  • 2020-02-12 容器和算法

    1:STL迭代器删除失效问题: 对于序列容器来说,使用erase(iterator) 后面每个元素的迭代器都会实效,

  • 第9章 顺序容器

    三、 顺序容器操作 删除元素image.png 容器操作可能使迭代器失效 添加元素vector/string:若存...

  • C++11 新特性学习(3) ---- 顺序性容器

    通用容器的分类 STL 对定义的容器分为三类:顺序性容器,关联性容器和容器适配器 顺序性容器是一种各个元素之间有顺...

  • 常用算数生成算法

    /* accumulate算法 计算容器元素累计总和 @param beg容器开始迭代器 @param end容器...

  • DAY20 Python基础:iteratorAndGenera

    一:迭代器 1.创建迭代器 (就可以看成特殊的容器)iter(序列类型)2.通过next去获取迭代器中的元素,每次...

  • c++程序员面试宝典之STL库

    十八.STL库 主要包括三大组件:容器、算法、迭代器。 容器:序列式容器:vector、deque、list;关联...

  • [算法] STL

    标准模板库STL的核心设计思想是将容器(类模板)与算法(函数模板)分开,使用迭代器封装访问容器元素的方法,容器所支...

  • java 迭代器

    在容器类中,需要取回其中的元素,但是,缺点就是:当使用容器,必须要对容器的确切类型编程。迭代器时一个对象,它...

  • C/C++基础知识(六)——异常、容器、命名空间

    异常处理 容器 序列式容器 元素排列顺序和元素本身无关,有添加顺序决定序列式容器有:vector,list,deq...

网友评论

    本文标题:使用迭代器删除序列性容器和关联性容器元素

    本文链接:https://www.haomeiwen.com/subject/lxkgoxtx.html