news 2026/7/2 1:46:10

Qt问题记录002:QMap的erase陷阱,正常运行与调试模式结果不同

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt问题记录002:QMap的erase陷阱,正常运行与调试模式结果不同

Qt的QMap循环删除元素(erase),在运行时正常,在调试模式下报错,提供解决代码。

关键词:
QMaperase、迭代器、遍历与删除

问题描述:

在使用 Qt 的QMap容器时,尝试在遍历过程中删除元素,在循环中调用erase()方法,虽然程序在正常运行时可能不会立即出现异常,但在调试模式下,可能会遇到错误或未定义行为。

Qt版本:5.14.2

代码如下:

点击折叠或展开代码

void test_map_erase()
{
QMap<int, int> map;
// 插入10条数据
for (int i = 0; i < 10; ++i) {
map.insert(i, i);
}
// 移除奇数
for(auto it=map.begin();it!=map.end();++it)
{
if((it.key() % 2) == 1) {
map.erase(it);
}
}
qDebug() << map;
}
运行结果:

运行输出:

QMap((0, 0)(2, 2)(4, 4)(6, 6)(8, 8))

调试模式运行报错,如图:


修改后代码:

为避免运行和调试不一致,统一改为如下代码:

点击折叠或展开代码

void test_map_erase()
{
QMap<int, int> map;
// 插入10条数据
for (int i = 0; i < 10; ++i) {
map.insert(i, i);
}
// 移除奇数
for(auto it=map.begin();it!=map.end();)
{
if((it.key() % 2) == 1) {
it = map.erase(it);
} else {
++it;
}
}
qDebug() << map;
}

注意:

  1. for循环去掉++it:for(auto it=map.begin();it!=map.end(); )
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 1:42:03

大模型评测与AI产品质量保障:第7篇 机器学习的三种学习范式

IT策士 10余年一线大厂经验&#xff0c;专注大模型测试、AI产品质量保障与职场进阶。我会在各个平台持续发布最新文章&#xff0c;助你少走弯路。 上一篇文章我们拆解了AI的六块技术拼图。但无论哪块拼图&#xff0c;背后驱动模型学习的都是三种核心范式——有监督学习、无监督…

作者头像 李华
网站建设 2026/7/2 1:39:44

turn_on_wheeltec_robot.launch

<launch><!-- Arguments参数 --><arg name"lidar_is_cx" default"false"/><arg name"car_mode" default"mini_4wd" doc"opt: mini_akm,senior_akm,top_akm_bs,top_akm_dl,mini_mec,senior_mec_bs,senior_m…

作者头像 李华
网站建设 2026/7/2 1:37:44

Skill安全系列之Skill基础

前言 在总结Skill中的相关风险前&#xff0c;我们先通过一篇的内容来看下什么是Skill&#xff0c;对其有一个初步的认识。 什么是Skill Skill翻译为技能的意思&#xff0c;在AI邻域中&#xff0c;Skill就是一个技能&#xff0c;比如给Agent一个A技能&#xff0c;那我们就需要拥…

作者头像 李华
网站建设 2026/7/2 1:34:17

跨架构容器化恶意软件动态分析沙箱设计与实现

1. 项目概述&#xff1a;跨架构容器化恶意软件动态分析沙箱在网络安全领域&#xff0c;动态恶意软件分析一直是识别和对抗新型威胁的重要手段。传统分析方案通常依赖于笨重的虚拟机管理程序或专用物理设备&#xff0c;这不仅限制了分析的灵活性和自动化程度&#xff0c;也难以适…

作者头像 李华
网站建设 2026/7/2 1:32:06

computer-use-fix-record

Codex Computer Use Plugin 不可用 摘要&#xff1a;本文详细分析了 Codex 桌面应用中 Computer Use 功能不可用的故障现象、根本原因及完整修复方案。问题根源在于 Codex 的插件同步机制未能正确将 computer-use 插件和 cua_node 运行时从 WindowsApps 应用包部署到用户数据目…

作者头像 李华