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()
页:
[1]