`
东边日出西边雨
  • 浏览: 262238 次
  • 性别: 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++;
        }
}

 

 

分享到:
评论

相关推荐

    vector list map 遍历删除制定元素 防止迭代器失效的实例

    在C++编程中,容器如`vector`, `list`, 和`map`是常用的数据结构,它们提供了方便的数据存储和操作。然而,在遍历这些容器并删除元素时,如果不小心,可能会导致迭代器失效,从而引发运行时错误。下面将详细解释如何...

    STL讲义其中包含部分有: vector list map,还有一些例子

    例如,可能会有排序vector的例子,使用lower_bound或upper_bound在map中查找元素,或者利用list进行高效的插入和删除操作。 总之,学习并熟练掌握STL对于任何C++程序员来说都是极其重要的,它能够提高代码的可读性...

    vector, list, map在遍历时删除符合条件的元素实现方法

    本文将详细介绍如何在遍历过程中删除`vector`、`list`和`map`中符合条件的元素。 1. **vector** `vector`是一种动态数组,提供随机访问和高效插入/删除尾部元素的功能。在删除元素时,如果使用迭代器,需要注意的是...

    遍历_C++_

    在C++编程语言中,遍历是访问容器中所有元素的一种基本操作,广泛应用于数组、向量、链表等数据结构。"遍历_C++_"这个主题主要关注如何使用不同的方法来遍历C++中的数据结构。下面我们将深入探讨几种常见的遍历策略...

    每天学点C++(C++实例教程:教程+源码)常用遍历算法.zip

    C++标准模板库(STL)中的容器如vector、list、set、map等,都有自己的迭代器供遍历。例如,遍历一个vector: ```cpp std::vector&lt;int&gt; vec = {1, 2, 3, 4, 5}; for(auto it = vec.begin(); it != vec.end(); it...

    STL学习,总结了map、vector、list的简单操作

    插入和查找元素在map中通常具有O(log n)的时间复杂度,这是因为map通常以红黑树的形式实现。以下是一些基本操作: 1. **创建map**:`std::map, std::string&gt; myMap;` 2. **插入元素**:`myMap[10] = "ten";` 或 `...

    [C++][经验总结]vectory迭代器(iterator)失效

    在C++中,迭代器是一种特殊的指针,它可以用来遍历容器中的元素,如`vector`、`list`或`map`等。迭代器提供了一种抽象的方式来访问容器内的元素,而无需暴露底层的实现细节。 当`vector`的迭代器失效时,意味着之前...

    C++中STL使用总结

    Vector是一种可以动态扩展的数组,它支持快速的随机访问,并允许在序列末尾插入和删除元素。 1. 创建vector对象:不指定容器大小时,使用vector&lt;T&gt; V;创建;指定容器大小使用vector&lt;T&gt; V(size_t n);创建;指定容器...

    c++ STL思维导图(自己总结)

    本文将总结C++ STL中的主要容器和算法,包括vector、deque、list、set、map、queue、stack和string等。 Vector容器 Vector容器是C++ STL中最常用的容器之一,用于存储同类型的元素。Vector容器提供了多种构造函数...

    C++ vector使用的一些注意事项

    erase 返回的是当前删除的元素的下一个位置的迭代器,所以需要注意的是遍历时候的 ++ 运算,这个与其它 list、map 差不多。需要注意的是 erase 后内存并未真正的清空,仅仅是删除内容,真正的容量大小 capacity 并...

    C++ STL资料

    在C++ STL中,`list`、`vector`和`map`是三个常用的容器,它们各自具有独特的功能和用途。 1. **list容器**: `list`是一个双向链表实现的容器,其内部元素可以快速地插入和删除。它的特点是元素在内存中不是连续...

    C++ STL程序员面试题

    - 迭代器:用于遍历容器中元素的指针类,提供了前向、双向和随机访问等多种类型。 - 算法:如排序、查找、交换等,如sort、find、swap等函数。 - 函数对象(或称谓谓词):用于定义特定操作,如比较函数、函数...

    c++stl库头文件及其源码

    在描述中提到的`&lt;stl_queue.h&gt;`、`&lt;stl_vector.h&gt;`和`&lt;stl_map.h&gt;`是STL中的关键组件,下面将详细介绍这些头文件及其源码相关的知识点。 1. ****: `queue`是STL中的一种线性容器,它遵循FIFO(First In First Out...

    C++ STL.pdf

    vector是一个动态数组,能够随机访问元素,并且可以在尾部高效地插入和删除元素。vector使用动态内存分配来适应元素数量的变化,当容量不足以容纳更多元素时,它会自动扩容。 1.1.2 list(双向链表容器) list是一...

    每天学点C++(C++实例教程:教程+源码)list容器.zip

    "list容器"是C++中的一个核心概念,它是STL中的双向链表实现,适合频繁的插入和删除操作。 1. **list容器简介** C++中的`std::list`是一个双向链接列表,可以容纳任何类型的元素。它提供了双向迭代器,允许从前向...

    东北大学c++课程PPT 第6章下

    * 迭代器可以用于遍历容器中的元素,例如遍历vector中的所有元素。 * 迭代器可以用于修改容器中的元素,例如删除vector中的某个元素。 四、Algorithms * 算法是应用于容器的过程,例如查找、排序等。 * 算法可以...

    C++库函数查询手册

    `begin(list)`函数是list容器的成员函数,与deque类似,它返回指向list容器第一个元素的迭代器,支持对list容器进行遍历和操作。 ### begin(map) `begin(map)`函数是map容器的成员函数,用于返回指向map容器中第一...

    C/C++ STL参考手册 STL帮助文档 中文/英文版都有

    在STL中,容器是一类可以存储数据的对象,如vector、list、set、map等。vector是一个动态数组,支持随机访问,适合频繁的插入和删除操作在末尾进行。list是一个双向链表,适用于频繁的插入和删除操作在中间或开头...

Global site tag (gtag.js) - Google Analytics