QMap - Items löschen

Alles rund um die Programmierung mit Qt
Antworten
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

QMap - Items löschen

Beitrag von Flachkoepper »

Moin,

ich hab eine QMap<int, MyClass*>. Um sie vollständig zu leeren und dabei den Speicher freizugeben, mache ich folgendes:

Code: Alles auswählen

foreach(int i, map.keys() ) {
	if( map.contains(i) )
		delete map.take(i);
}
Ist das korrekt?
zwutz
Beiträge: 14
Registriert: 20. November 2007 09:13

Beitrag von zwutz »

ähm...

Code: Alles auswählen

map.clear();
sollte ausreichen...
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

es gibt auch noch qDeleteAll()... aus Porting Qt3 to Qt4, ist zwar für QList hilft vielleicht trotzdem:

Code: Alles auswählen

     while (!list.isEmpty())
         delete list.takeFirst();

In 99% of cases, the following idiom also works:
     qDeleteAll(list);
     list.clear();

However, it may lead to crashes if list is referenced from the value type's destructor, because list contains dangling pointers until clear() is called.
Flachkoepper
Beiträge: 149
Registriert: 11. Januar 2005 12:14
Wohnort: Hannover

Beitrag von Flachkoepper »

map.clear();
sollte ausreichen...
Aber dabei wird doch der Speicherplatz nicht freigeräumt, oder?

qDeleteAll kannte ich noch nicht. Danke!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Flachkoepper hat geschrieben:
map.clear();
sollte ausreichen...
Aber dabei wird doch der Speicherplatz nicht freigeräumt, oder?
richtig erkannt. deshalb reicht ein map.clear() hier nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten