c++ - 从 QMap 中删除所有值

标签 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;
}

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

最佳答案

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

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

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

关于c++ - 从 QMap 中删除所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849858/

相关文章:

c - 指针未以所需方式打印

c++ - 编译错误 c++ "was not declared in this scope" "expected type specifier"等

c++ - 将终端上的所有消息和警告打印到文件中?

javascript - 在 QML 中使用对话框

Qt4 如何为我的应用程序添加 16px/32px/... 图标?

c++ - 指针有点问题

c++ - array<System::String ^> 标准 C++ 是怎样的?

c++ - 使用istream遇到错误将double输入int变量

c++ - 为什么 typeid 总是返回 false?

c - 使用链表 C 选择排序