QMap QList的安全删除操作
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的安全删除操作相关推荐
- mysql 插入删除操作_MySQL——增删改操作
插入语句 一次插入操作只插入一行数据 insert into [tablename](listname1,listname2,......) values (value1,value2,......) ...
- asp.net 对xml文件的读写,添加,修改,删除操作
asp.net 对xml文件的读写,添加,修改,删除操作 下面有代码调试正确 using System; using System.Collections; using System.Componen ...
- 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”...
用 DeleteMark 的出发点: 1:虽然在界面上有删除提示,但是客户错误的删除了一笔数据后,想恢复被删除的数据是特别困难的,有人曾比喻,若输入数据的工作量,用1来比喻,那恢复被误删除的数据的工作 ...
- 给jqGrid数据行添加修改和删除操作链接
我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1&qu ...
- ASP.NET XML读取、增加、修改和删除操作
C#-XML读取.增加.修改和删除操作 1.xml文件格式如下: <?xml version="1.0" encoding="utf-8"?> &l ...
- mysql b 树删除操作,B-树的删除过程介绍
在B-树中删除节点时,可能会发生向兄弟节点借元素,和孩子节点交换元素,甚至节点合并的过程. 我们以下面的树为基础,进行删除操作. 首先明确一下这个树的定义.它是一个5阶树.所以,每个节点内元素个数为2 ...
- 帝国cms清除html标签,帝国CMS结合项筛选带已选择的条件和删除操作的方法
本文实例讲述了帝国CMS结合项筛选带已选择的条件和删除操作的方法.分享给大家供大家参考.具体实现方法如下: 这个功能是在帝国的官方插件帝国官方插件-结合项列表属性筛选显示下载基础上修改而来的,(官方插 ...
- c语言二叉排序树的创建与查找,C语言实现二叉查找树的插入和删除操作问题求教...
使用C语言实现二叉查找树的插入和删除操作,但在 return searchBST( T->rchild, val, f, p);出错.这里应该使用了双指针,求教应该怎么改才正确. /* +--- ...
- Java文件删除操作File#delete()
这个算是一个非常通用并且常见的API了,但是其实这个方法在删除文件的时候其实是有一些限制的.如下,我们可以看见这个API返回值代表着删除是否成功: public boolean delete() {S ...
- map中的迭代删除操作注意问题
如果map中包含若干个key为10的倍数,要删除key为10的倍数. 错误形式 #include <iostream> #include <map> #include < ...
最新文章
- vue-music 音乐网站
- leetcode算法题--把数组排成最小的数
- 高性能IO -Reactor模式的实现
- linux 查看服务器性能常用命令
- Tutorial on Variational AutoEncoders
- Excel 打开csv显示在一个单元格
- 读取CRM 产品主数据所有属性的API
- 第十三期:你不想错过的那些JSON工具
- 华为鸿蒙系统小米,继华为鸿蒙之后,又一国产系统在悄悄崛起:小米MIOS全面曝光...
- spring cloud微服务分布式云架构 - Spring Cloud简介
- 由一道题目看抽象向量组的线性相关问题
- js调用android手写输入法,jQuery手写输入法代码
- 计算机会考excel操作,信息技术会考EXCEL操作题.doc
- spy——[1220] SPY
- 使用Python按时间顺序批量重命名文件
- 中国半导体如何自我救赎
- Redis:集合SADD、SISMEMBER、SPOP、SRANDMEMBER、SREM、SMOVE、SCARD、SMEMBERS、SSCAN命令介绍
- ROSNOTE : ros::spin() / ros::spinOnce() /rospy.spin()
- No servers available for service: renren…。 Gateway 网关报503错误 ,已解决
- 前端_前端招聘面试题(1)