У меня есть 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. Таким образом, вам не нужно беспокоиться о цикле или об удалении элементов по отдельности.
Других решений пока нет …