std :: map多个迭代器,删除及其值

哈里希南·R
#include <stdio.h>
#include <iostream>
#include <map>
#include <string>
#include <stdlib.h>

using namespace std;

class Fix
{

};

int main() 
{
    map<int, Fix *> m;

    Fix * f = new Fix();
    m.insert( make_pair( 2, f) );

    m.insert( make_pair( 3, f) );

    map<int, Fix *>::iterator it = m.find(2);
    map<int, Fix *>::iterator it1 = m.find(2);


    m.erase(it);

    // Will Create problem 
    // m.erase(it1);

    // Still value is there
    // So from the map node, iterator copy its value ?
    printf("%d\n", it->first);
    printf("%d\n", it1->first);

}  

我有一个包含两个条目的Map,也有两个指向相同条目的迭代器。使用Iterator1从地图中删除了一个条目。删除后仍然保留Iterator1和Iterator2的值。

问题

  1. 是Iterator指向Map(红黑树)的节点
  2. 迭代器在迭代时,Iterator是否正在处理节点的键和值?因此,即使从映射表中删除了条目,它也保留了该值。
4个

对于std::map::erase使用这种方法对迭代器有以下作用:

  • 从容器中删除指定的元素

  • 被擦除元素的引用和迭代器无效其他引用和迭代器不受影响。

因此,即使it1擦除后it仍然it1可以巧合地指向“现在无效”的先前内存,也无法使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: map迭代并删除valgrind错误

来自分类Dev

带有迭代器的std :: map从std :: map的迭代器到std :: list

来自分类Dev

模板C ++:如何访问std :: map和std :: set的迭代器值?

来自分类Dev

通过迭代器从std :: vector中删除

来自分类Dev

std :: map :: begin()之前的STL迭代器

来自分类Dev

std :: unordered_map的递增迭代器

来自分类Dev

为什么不能使用反向迭代器从std :: map中删除元素?

来自分类Dev

在std :: unordered_map <int,std :: vector <Element >>上进行迭代的迭代器

来自分类Dev

这是适当的行为吗?std :: map迭代器无效

来自分类Dev

std :: map使用迭代器查找距离,程序不会终止

来自分类Dev

再次获取std :: map会更改先前的迭代器

来自分类Dev

std :: map :: begin()返回带有垃圾的迭代器

来自分类Dev

在C ++ std :: map中使用模板迭代器

来自分类Dev

如何通过推进std :: map迭代器来停止for循环?

来自分类Dev

为自定义 std::map 迭代器实现 erase()

来自分类Dev

由于从 std::map 派生的类中的 std::map 迭代器导致的内存错误

来自分类Dev

std :: map与std :: unordered_map的迭代值类型上的差异

来自分类Dev

std :: map与std :: unordered_map的迭代值类型上的差异

来自分类Dev

使用 std::min 将迭代器值限制为 end()

来自分类Dev

std :: atomic作为std :: map的值

来自分类Dev

关于从 std::map 迭代器的第二个存储值 _Ty2 秒复制数据的问题

来自分类Dev

std :: priority_queue,带有迭代器到std :: map的元素-无效的堆

来自分类Dev

使用反向迭代器插入std :: list会更改原始反向迭代器的值

来自分类Dev

C ++ std :: vector <std :: string>迭代器segfaults

来自分类Dev

std :: map是否可以在迭代器中有效地拆分为两个std :: map?

来自分类Dev

如何使用以下模板为地图声明迭代器 - std::map<std::string, T> my_map?

来自分类Dev

随后在多个std容器上进行迭代

来自分类Dev

交错std :: map插入和迭代

来自分类Dev

openMp:并行化std :: map迭代

Related 相关文章

  1. 1

    std :: map迭代并删除valgrind错误

  2. 2

    带有迭代器的std :: map从std :: map的迭代器到std :: list

  3. 3

    模板C ++:如何访问std :: map和std :: set的迭代器值?

  4. 4

    通过迭代器从std :: vector中删除

  5. 5

    std :: map :: begin()之前的STL迭代器

  6. 6

    std :: unordered_map的递增迭代器

  7. 7

    为什么不能使用反向迭代器从std :: map中删除元素?

  8. 8

    在std :: unordered_map <int,std :: vector <Element >>上进行迭代的迭代器

  9. 9

    这是适当的行为吗?std :: map迭代器无效

  10. 10

    std :: map使用迭代器查找距离,程序不会终止

  11. 11

    再次获取std :: map会更改先前的迭代器

  12. 12

    std :: map :: begin()返回带有垃圾的迭代器

  13. 13

    在C ++ std :: map中使用模板迭代器

  14. 14

    如何通过推进std :: map迭代器来停止for循环?

  15. 15

    为自定义 std::map 迭代器实现 erase()

  16. 16

    由于从 std::map 派生的类中的 std::map 迭代器导致的内存错误

  17. 17

    std :: map与std :: unordered_map的迭代值类型上的差异

  18. 18

    std :: map与std :: unordered_map的迭代值类型上的差异

  19. 19

    使用 std::min 将迭代器值限制为 end()

  20. 20

    std :: atomic作为std :: map的值

  21. 21

    关于从 std::map 迭代器的第二个存储值 _Ty2 秒复制数据的问题

  22. 22

    std :: priority_queue,带有迭代器到std :: map的元素-无效的堆

  23. 23

    使用反向迭代器插入std :: list会更改原始反向迭代器的值

  24. 24

    C ++ std :: vector <std :: string>迭代器segfaults

  25. 25

    std :: map是否可以在迭代器中有效地拆分为两个std :: map?

  26. 26

    如何使用以下模板为地图声明迭代器 - std::map<std::string, T> my_map?

  27. 27

    随后在多个std容器上进行迭代

  28. 28

    交错std :: map插入和迭代

  29. 29

    openMp:并行化std :: map迭代

热门标签

归档