我得到了一个带有QMap键和指向我类对象的值指针的QString。但是,当我动态分配值时,我不知道如何从QMap中删除QMap指针:
QMap<QString, myClass*> types;
myClass *type = types.value(typeKey);
if (!type) {
type = new myClass;
types.insert(typeKey, type);如何用键删除指针?我知道QMap方法,如remove。这样用安全吗?
关于以下几点:
const QString key = types.key(static_cast<myClass*>());
types.remove(key);发布于 2013-11-04 12:14:05
remove()函数从映射中删除项,但是它不会删除它,所以如果它是指向对象的指针,则必须自己执行。我会以下列方式这样做:
myClass *type = types.take("foo");
delete type;发布于 2016-11-22 05:16:28
作为QMap::clear不删除指针,还有一种使用qDeleteAll函数的方法。qDeleteAll只在QMap和QHash的情况下对值工作,而对键(即使是指针类型的键)不起作用,所以下面的示例只适用于kay值容器的值。在此值中,必须为指针类型。
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();
https://stackoverflow.com/questions/19767322
复制相似问题