从QMap中删除所有值

时间:2013-04-06 10:39:22

标签: c++ qt pointers qmap

我有一个QMap包含指向类对象的指针,使用new分配。我需要删除所有这些指针。使用QMap进行此操作的正确方法是什么?我可以这样做:

QList<ClassName*> allVals = map.values();
for (QList<ClassName*>::iterator it = allVals.begin(), endIt = allVals.end(); it != endIt; ++it) {
    delete *it;
}

但有更好的方法吗?

1 个答案:

答案 0 :(得分:23)

执行此操作的最佳方法是使用qDeleteAll(...)

qDeleteAll( map );  //  deletes all the values stored in "map"
map.clear();        //  removes all items from the map

qDeleteAll(...)可用于所有Qt的容器。这样您就不必担心循环,也不用担心单独删除项目。