`
东边日出西边雨
  • 浏览: 257945 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c++ vector list map在遍历中删除元素

    博客分类:
  • c
阅读更多

 

c++ STL 中的vector, list, map这些数据结构,经常需要在遍历时删除其中的元素,但是又不能直接删除,会出错。

 

在你调用erase方法删除元素时,erase方法会返回下一个元素的迭代器,利用这一点,可以写这样的代码:

 

 

for(vector<int>::iterator it=d.begin();it!=d.end(); )
{
        if(*it==3)
       {
            it=d.erase(it);
        }
        else
       {
            it++;
        }
}

 这一点对于vector, list和map都适用。

 

对于map还可以写成这样

 

for(vector<int>::iterator it=d.begin();it!=d.end(); )
{
        if(*it==3)
       {
            d.erase(it++);
        }
        else
       {
            it++;
        }
}

 

 

分享到:
评论

相关推荐

    c++容器list、vector、map、set区别与用法详解

    c++容器list、vector、map、set区别 list 封装链表,以链表形式实现,不支持[]运算符。 对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向)。 新添加的元素,...

    c++实现STL容器

    实现了vector list set map 可以使用iterator遍历 插入 删除等功能

    【STL源代码】C++标准库STL源代码下载

    【STL源代码】中包含了许多常用的数据结构(如vector、list、map等)和算法(如排序、查找、遍历等)。通过阅读代码可以仔细研究这些数据结构和算法的实现,了解它们的内部工作原理和使用方式。

    C++进阶课程讲义_v1.0.4.pdf

    6.3类模板在项目开发中的应用 25 6.4作业 29 7、C++的类型转换 29 7.1 类型转换名称和语法 29 7.2 类型转换一般性介绍 29 7.3 典型案例 30 7.3.1 static_cast用法和reinterpret_cast用法 30 7.3.2 dynamic_cast用法...

    程序员面试刷题的书哪个好-CPP_Learning:记录下C++语言学习

    unordered_map是用哈希表实现的,而map是采用红黑树然后中序遍历的。 STL,vector,list 标准模版库,vector是动态数组/向量,list是双向链表。都是顺序容器。 C++多态,虚函数机制 基础:继承关系,有虚函数,父类...

    C++STL程序员开发指南【可搜索+可编辑】

    1-3-2 在派生类中实现类的基本函数,................... _ ............... 29 1-3-3 内联函数技术,........ ................................... 30 3133 ..... .. .. .. .. .. .. .. .. .. .. .. .. .....

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    java 面试题 总结

    栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL...

    超级有影响力霸气的Java面试题大全文档

     栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。 堆是栈的一个组成元素 22、forward 和redirect的区别  forward是服务器请求资源,服务器直接访问目标地址的URL,把...

    JAVA面试题最全集

    数据结构,如何遍历List中的元素? 如果要按照键值保存或者访问数据,使用什么数据结构? 要掌握Collection相关的接口和类的使用 56.使用StringBuffer类与String类进行字符串连接时有何区别? 57.调用Thread类的...

    ReflectionPOC:适用于C ++的概念验证的编译时反射API

    检查清单支持Archive.h支持杰森支持Sol2 / Lua支持struct_pack UI绑定支持可以递归遍历类,嵌套结构)支持继承支持标准容器std :: vector std :: deque std :: list std :: set std :: multiset std :: map std :: ...

Global site tag (gtag.js) - Google Analytics