zoukankan      html  css  js  c++  java
  • vector和map使用erase删除元素

    注意的原因:对于关联容器来说,如果某一个元素已经被删除,那么其对应的迭代器就失效了,不应该再被使用;否则会导致程序无定义的行为。

    错误;

    //vector
    vector <int>::iterator iter;
    for (iter=vecInt.begin(); iter!=vecInt.end(); iter++)
    {
        vecInt.erase(iter);
    }
    //map
    for(ITER iter=mapTest.begin();iter!=mapTest.end();++iter)  
    {  
        mapTest.erase(iter);  
    }  

    正确写法vector:

    vector <int>::iterator iter;
    //第一种
    for (iter=vecInt.begin(); iter!=vecInt.end();)
    {
        iter = vecInt.erase(iter);
    }
    //第二种
    for (iter=vecInt.begin(); iter!=vecInt.end();)
    {
        vecInt.erase(iter++);
    }

    正确写法map:

    //第一种
    for(ITER iter=mapTest.begin();iter!=mapTest.end();) //注意此处不能再写iter++  
    {
        mapTest.erase(iter++);  
    }  
    //第二种
    for(ITER iter=mapTest.begin();iter!=mapTest.end();)  
    {  
        iter=mapTest.erase(iter);  //erase() 成员函数返回下一个元素的迭代器  
    }  
  • 相关阅读:
    Mybatis-Plus select不列出全部字段
    git合并之 merge和rebase
    git
    springboot缓存开发
    关于Maven打包
    邮件发送模型及其Python应用实例
    Python 日志模块的定制
    python 解析 XML文件
    有限状态机FSM详解及其实现
    动态规划
  • 原文地址:https://www.cnblogs.com/GnibChen/p/8600989.html
Copyright © 2011-2022 走看看