1:删出map中的元素,迭代器位移出错
遍历QMap引发异常处理_milletluo的博客-优快云博客
错误代码
void UI_Proc_AVPOSE_CacheSceneData_Desktop::clearDesignatedRangeLayer(int range)
{
if(mMapSceneLayer.isEmpty() && mListMonitor.isEmpty()){
return;
}else {
mListLayer.clear();
auto iter = mMapSceneLayer.begin();
while(iter != mMapSceneLayer.end()){
if(iter.key() <= range){
mListLayer = iter.value();
for(int i = 0; i < mListLayer.size();++i){
threadPool.commit(tdDelSceneLayerDB, mListLayer.at(i).strLayerID, mListLayer.at(i).strSceneID, this);
}
mMapSceneLayer.remove(iter.key());
mListLayer.clear();
}
iter++;
}
}
}
正确代码
void UI_Proc_AVPOSE_CacheSceneData_Desktop::clearDesignatedRangeLayer(int range)
{
if(mMapSceneLayer.isEmpty() && mListMonitor.isEmpty()){
return;
}else {
mListLayer.clear();
auto iter = mMapSceneLayer.begin();
while(iter != mMapSceneLayer.end()){
if(iter.key() <= range){
mListLayer = iter.value();
for(int i = 0; i < mListLayer.size();++i){
threadPool.commit(tdDelSceneLayerDB, mListLayer.at(i).strLayerID, mListLayer.at(i).strSceneID, this);
}
mMapSceneLayer.erase(iter++);
mListLayer.clear();
}else{
iter++;
}
}
}
}