12

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

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

但是有没有更好的方法来做同样的事情?

4

1 回答 1

25

最好的方法是使用qDeleteAll(...)

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

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

于 2013-04-06T11:40:28.917 回答