1.QMap

有时候回遇见在循环中需要删除某个map元素的操作,如果直接remove其实会影响内部迭代器,这样操作会有问题。删除方式换为erase并更新迭代器即可

for (auto it = map.begin(); it != map.end();)if (it.value() % 2 == 1)it = map.erase(it);else++it;

这里之所以安全的原因是erase已经是下一个成员了,根据文档说明,erase会返回下一个成员的迭代器

Removes the (key, value) pair pointed to by the iterator pos from the map, and returns an iterator to the next item in the map.

上面的是STL-style iterators的写法,qmap同时也提供了Java-style iterators的写法

QMutableMapIterator<QString, QString> i(map);while (i.hasNext()) {i.next();if (i.key() == i.value())i.remove();}

java的看起来更方便,但是效率会稍微低一点

The Java-style iterators are more high-level and easier to use than the STL-style iterators; on the other hand, they are slightly less efficient.

QMapIterator 和 QMutableMapIterator 的区别在于前者是不可以修改map的

2.QList

在qt中微qlist提供了和qmap类似的迭代器操作,QMutableListIterator,也可以用STL-style iterators,和qmap操作基本是一样的

QMap QList的安全删除操作相关推荐

  1. mysql 插入删除操作_MySQL——增删改操作

    插入语句 一次插入操作只插入一行数据 insert into [tablename](listname1,listname2,......) values (value1,value2,......) ...

  2. asp.net 对xml文件的读写,添加,修改,删除操作

    asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...

  3. 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”...

    用 DeleteMark 的出发点: 1:虽然在界面上有删除提示,但是客户错误的删除了一笔数据后,想恢复被删除的数据是特别困难的,有人曾比喻,若输入数据的工作量,用1来比喻,那恢复被误删除的数据的工作 ...

  4. 给jqGrid数据行添加修改和删除操作链接

    我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1&qu ...

  5. ASP.NET XML读取、增加、修改和删除操作

    C#-XML读取.增加.修改和删除操作 1.xml文件格式如下: <?xml version="1.0" encoding="utf-8"?> &l ...

  6. mysql b 树删除操作,B-树的删除过程介绍

    在B-树中删除节点时,可能会发生向兄弟节点借元素,和孩子节点交换元素,甚至节点合并的过程. 我们以下面的树为基础,进行删除操作. 首先明确一下这个树的定义.它是一个5阶树.所以,每个节点内元素个数为2 ...

  7. 帝国cms清除html标签,帝国CMS结合项筛选带已选择的条件和删除操作的方法

    本文实例讲述了帝国CMS结合项筛选带已选择的条件和删除操作的方法.分享给大家供大家参考.具体实现方法如下: 这个功能是在帝国的官方插件帝国官方插件-结合项列表属性筛选显示下载基础上修改而来的,(官方插 ...

  8. c语言二叉排序树的创建与查找,C语言实现二叉查找树的插入和删除操作问题求教...

    使用C语言实现二叉查找树的插入和删除操作,但在 return searchBST( T->rchild, val, f, p);出错.这里应该使用了双指针,求教应该怎么改才正确. /* +--- ...

  9. Java文件删除操作File#delete()

    这个算是一个非常通用并且常见的API了,但是其实这个方法在删除文件的时候其实是有一些限制的.如下,我们可以看见这个API返回值代表着删除是否成功: public boolean delete() {S ...

  10. map中的迭代删除操作注意问题

    如果map中包含若干个key为10的倍数,要删除key为10的倍数. 错误形式 #include <iostream> #include <map> #include < ...

最新文章

  1. vue-music 音乐网站
  2. leetcode算法题--把数组排成最小的数
  3. 高性能IO -Reactor模式的实现
  4. linux 查看服务器性能常用命令
  5. Tutorial on Variational AutoEncoders
  6. Excel 打开csv显示在一个单元格
  7. 读取CRM 产品主数据所有属性的API
  8. 第十三期:你不想错过的那些JSON工具
  9. 华为鸿蒙系统小米,继华为鸿蒙之后,又一国产系统在悄悄崛起:小米MIOS全面曝光...
  10. spring cloud微服务分布式云架构 - Spring Cloud简介
  11. 由一道题目看抽象向量组的线性相关问题
  12. js调用android手写输入法,jQuery手写输入法代码
  13. 计算机会考excel操作,信息技术会考EXCEL操作题.doc
  14. spy——[1220] SPY
  15. 使用Python按时间顺序批量重命名文件
  16. 中国半导体如何自我救赎
  17. Redis:集合SADD、SISMEMBER、SPOP、SRANDMEMBER、SREM、SMOVE、SCARD、SMEMBERS、SSCAN命令介绍
  18. ROSNOTE : ros::spin() / ros::spinOnce() /rospy.spin()
  19. No servers available for service: renren…。 Gateway 网关报503错误 ,已解决
  20. 前端_前端招聘面试题(1)

热门文章

  1. android cts问题分析,一则CTS测试错误分析
  2. xp计算机workgroup无法访问,无法访问,小编告诉你怎么解决workgroup无法访问
  3. Qt系列文章之 Model/View 框架
  4. jsp超链接中怎么跳转页面跳转_JSP跳转页面汇总
  5. jsp复习题库(1)
  6. 怎样设置CCProxy
  7. 软件测试需要掌握哪些技术?
  8. 瀚高数据库适配定时框架Quartz
  9. 深度学习:用生成对抗网络(GAN)来恢复高分辨率(高精度)图片 (附源码,模型与数据集)
  10. 光功率 博科交换机_交换机是否支持查看光模块型号及收发光功率