zoukankan      html  css  js  c++  java
  • map/vector erase

    问题核心:erase之后迭代器是否失效

    vector调用erase之后,该迭代器之后的迭代器都失效;

    map调用erase之后,其他迭代器并不会失效。

     1 vector<int> vecData;
     2 for (typeof(vecData.begin()) it; it != vecData.end();)
     3 {
     4     if (*it == 1)
     5     {
     6         it = vecData.erase(it);
     7       //vv.erase(it++);  //vector erase之后,it迭代器后面的所有迭代器都会失效,所有不能用这种方式
     8     }
     9     else
    10         it++;
    11 }
    12 
    13 map<int, int> mapData;
    14 for (typeof(mapData.begin()) it = mapData.begin(); it != mapData.end(); )
    15 {
    16 
    17         if (it->second == 1)
    18         {
    19             /*
    20              * it 赋值给一个中间变量tmp,传给erase
    21              * it 自加
    22              * map调用erase删除tmp迭代器指向的元素
    23              * */
    24             mapData.erase(it++); //map erase可以,因为map erase之后只有该迭代器自身失效,其他迭代器不会受影响
    25         }
    26         else
    27             it++;
    28 }
  • 相关阅读:
    css
    js -【 数组】判断一个变量是数组类型的几种方法
    【消灭代办】第2周
    【本周面试题】第2周
    【本周面试题】第1周
    【消灭代办】第1周
    echarts
    css
    js
    JS方法
  • 原文地址:https://www.cnblogs.com/070412-zwc/p/6741118.html
Copyright © 2011-2022 走看看