一、vector、list

  正确版本:  

  for(auto iter = a.begin(); iter != a.end(); )

  {

    if(*iter > 30)

    {

      iter = a.erase(iter);

    }

    else

    {

      iter++;

    }

  }

  错误版本:

  for(auto iter = a.begin(); iter != a.end(); ++iter)

  {

    if(*iter > 30)

    {

      a.erase(iter);

    }

  }

二、map

  删除map的元素,不能是 map[key]=NULL

  这种做法没有删除<key,value>对,而改成了<key,NULL>

  只能是

     iterator it=map.find(key);

     if(it!=map.end())

map.erase(it);

  遍历删除问题:

    正确版本:   

for(;iter!=mapStudent.end();)
{
if((iter->second)>=aa)
{
//满足删除条件,删除当前结点,并指向下面一个结点
mapStudent.erase(iter++);
}
else
{
//条件不满足,指向下面一个结点
iter++;
}
}
错误版本:
for(map<string, string>::iterator i = mapData.begin(); i != mapData.end(); ++i)
{
if(i->first == "b")
{
mapData.erase(i);  
}
}  

转载于:https://www.cnblogs.com/vinke2013/p/7209242.html

STL删除元素注意事项相关推荐

  1. python里删除range里的数字_python中range函数与列表中删除元素

    一.range函数使用 range(1,5)   代表从1到4(不包含5),结果为:1,2,3,4   ,默认步长为1 range(1,5,2)   结果为:1, 3  (同样不包含5) ,步长为2 ...

  2. C++ 笔记(23)— STL vector 类(实例化 vector、末尾插入、指定位置插入、数组方式访问元素、指针方式访问元素、删除元素、大小与容量区别)

    1. vector 特点 vector 是一个模板类,提供了动态数组的通用功能,具有如下特点: 在数组末尾添加元素所需的时间是固定的,即在末尾插入元素的所需时间不随数组大小而异,在末尾删除元素也如此: ...

  3. STL中用erase()方法遍历删除元素

    STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector .deque):另一类是以不连续的节点形式存储的容器(如:list.set.map).在使用erase方法来删除元素时 ...

  4. STL中map/vector的删除元素操作

    在我们使用C++中的STL的时候,可以使用迭代器iterator进行遍历,但是当我们通过iterator对vector和map删除元素的时候,要格外的小心,往往操作不当,导致iterator失效,后果 ...

  5. 容器删除元素后迭代器失效_STL 4: STL之容器:选择时机,删除元素,迭代器失效...

    一. 种类: 标准STL序列容器:vector.string.deque和list. 标准STL关联容器:set.multiset.map和multimap. 非标准序列容器slist和rope.sl ...

  6. STL容器删除元素的陷阱

    今天看Scott Meyers大师的stl的用法,看到了我前段时间犯的一个错误,发现我写的代码和他提到错误代码几乎一模一样,有关stl容器删除元素的问题,错误的代码如下: std::vector< ...

  7. stl list 删除元素_删除所有出现的元素,并从列表中删除一些特定的元素。 C ++ STL...

    stl list 删除元素 list.remove()和list.remove_if()函数 (list.remove() and list.remove_if() functions) remove ...

  8. C++中STL容器利用迭代器删除元素小结

    C++中STL容器利用迭代器删除元素小结 在STL容器中删除元素,容易导致迭代器失效,故应该清楚明白其用法,现在总结一下. 转载自:https://blog.csdn.net/yf_li123/art ...

  9. C++ STL容器元素正确删除

    一.容器与迭代器 1.1 STL容器 容器是用来管理一大群元素的,为了适应不同需要,STL提供了不同的容器. 在C++中,容器被定义为:在数据存储上,有一种对象类型,它可以持有其他对象或指向其他对象的 ...

最新文章

  1. Day03-卷积神经网络原理与使用
  2. http2.0 的时代来了
  3. Beta阶段敏捷冲刺总结
  4. tensorflow中创建多个计算图(Graph)
  5. vue获取输入框得内容_React入坑(四):获取输入框内的内容
  6. 洛谷试炼场-简单数学问题-二分查找
  7. 李楠:《流浪地球》抄的经典套路 但这不是贬低
  8. TNS-12535: TNS: 操作超时_win7
  9. python从入门到精通pdf-跟老齐学Python:从入门到精通 完整版PDF[7MB]
  10. 高效程序员秘籍(9):快速查找硬盘上的文件和目录
  11. 软件工程第二版(判断题答案)
  12. asp.net 按钮点击调用FileUpload
  13. Matlab 官网培训 - 大型项目-风力发电机数据模型构建-Catching the Wind
  14. 阿铭Linux_网站维护学习笔记20190306
  15. Ansys Lumerical | 行波 Mach-Zehnder 调制器仿真分析
  16. 如何玩好“用户思维”
  17. C#中抽象类和接口的区别与应用场景
  18. KusionStack 开源有感|历时两年,打破 “隔行如隔山” 困境
  19. Realsense D435i使用笔记
  20. db2替换激活永久lic

热门文章

  1. 面试前需要准备的五个步骤
  2. jq点击按钮获取php的值删除,通过jquery怎么移除点击事件
  3. android raw 引用,Android 资源-raw和assets
  4. 【Centos 7】【Docker】 安装 kafka
  5. 更换Spring底层日志框架
  6. phpstorm遍历PHP数组,使用PHPStorm对齐数组的键值对
  7. 华为荣耀20和x10比较_荣耀x10和荣耀20Pro哪个值得入手 荣耀x10和荣耀20Pro参数对比...
  8. 模型部署到移动端_TensorFlow Lite 自然语言处理模型的最新功能,助力设备端 NLP 部署...
  9. centos 8 rpm yum install_关于yum不能正常使用的解决方案
  10. linux xampp nginx,nginx配置教程_如何配置nginx_nginx安装与配置详解