嵌套容器上的 qDeleteAll
Posted
技术标签:
【中文标题】嵌套容器上的 qDeleteAll【英文标题】:qDeleteAll on nested containers 【发布时间】:2013-01-17 00:11:40 【问题描述】:在 Qt 中,如果我嵌套了类似于以下内容的 QMap:
QMap<int, QMap<int, QMap<int, int*>* >* >
一次调用 qDeleteAll 会负责递归清理内存,还是我必须通过迭代每个容器手动多次调用 qDeleteAll?
【问题讨论】:
问题是为什么要使用指向地图的指针。这几乎总是不必要的。是否有理由使用 int* 而不是 int? int* 实际上是一个数组,我正在解析文件并动态创建数组,因为我不知道会有多少,地图也是如此。一切都是动态创建的。整个结构基本上就是一个N维查找表 这就是 std::vector、QVector、QMultiMap 等的用途...... 【参考方案1】:由于您使用的是普通指针,因此您需要自己负责递归清理内存。
如果您希望自动清理内存,请改用智能指针。 Qt 有很多可用的:Qt Smart Pointers
我相信QScopedPointer 和QSharedPointer 是您最感兴趣的。
【讨论】:
以上是关于嵌套容器上的 qDeleteAll的主要内容,如果未能解决你的问题,请参考以下文章