剽达崖 发表于 2025-10-13 16:35:03

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

关键词:

QMap、erase、迭代器、遍历与删除


问题描述:

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


代码如下:

void test_map_erase(){    QMap 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()

扔飒 发表于 2025-11-12 23:06:07

这个好,看起来很实用

喳谍 发表于 2025-11-14 06:03:45

用心讨论,共获提升!

垢峒 发表于 2025-12-3 22:37:30

谢谢楼主提供!

役魅肋 发表于 2025-12-8 15:05:22

很好很强大我过来先占个楼 待编辑

边书仪 发表于 5 天前

谢谢分享,辛苦了

饮邺谲 发表于 前天 09:17

前排留名,哈哈哈
页: [1]
查看完整版本: Qt问题记录002:QMap的erase陷阱,正常运行与调试模式结果不同