首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QMap中删除指针?

从QMap中删除指针?
EN

Stack Overflow用户
提问于 2013-11-04 12:01:37
回答 2查看 4.3K关注 0票数 4

我得到了一个带有QMap键和指向我类对象的值指针的QString。但是,当我动态分配值时,我不知道如何从QMap中删除QMap指针:

代码语言:javascript
复制
QMap<QString, myClass*> types;

myClass *type = types.value(typeKey);
    if (!type) {
        type = new myClass;
        types.insert(typeKey, type);

如何用键删除指针?我知道QMap方法,如remove。这样用安全吗?

关于以下几点:

代码语言:javascript
复制
const QString key = types.key(static_cast<myClass*>());
    types.remove(key);
EN

回答 2

Stack Overflow用户

发布于 2013-11-04 12:14:05

remove()函数从映射中删除项,但是它不会删除它,所以如果它是指向对象的指针,则必须自己执行。我会以下列方式这样做:

代码语言:javascript
复制
myClass *type = types.take("foo");
delete type;
票数 10
EN

Stack Overflow用户

发布于 2016-11-22 05:16:28

作为QMap::clear不删除指针,还有一种使用qDeleteAll函数的方法。qDeleteAll只在QMap和QHash的情况下对值工作,而对键(即使是指针类型的键)不起作用,所以下面的示例只适用于kay值容器的值。在此值中,必须为指针类型。

代码语言:javascript
复制
QMap<int,Employee *> mlist;
mlist.insert(1,new Employee("Blackpool", "Stephen"));
mlist.insert(2,new Employee("Twist", "Oliver"));

qDeleteAll(mlist);
#or you can do it like
qDeleteAll(mlist.begin(),mlist.end());

更新:是的,在它之后总是使用clear(),从地图中删除条目,例如mlist.clear();

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19767322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档