QList

Alles rund um die Programmierung mit Qt
Antworten
madugi
Beiträge: 11
Registriert: 12. Februar 2009 09:19
Wohnort: Berlin

QList

Beitrag von madugi »

Hallo, gibt es eine einfache Möglichkeit aus einer QList alle doppelten Einträge zu entfernen?
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Nur so eine Idee:

Code: Alles auswählen

 list = list.toSet().toList();
wuerde vermutlich gehen, ist aber recht speicherintensiv...
nkc
Beiträge: 67
Registriert: 3. November 2008 12:01

Beitrag von nkc »

1. Anzahl deiner Einträge ermitteln.
2. for-Schleife, die bis zu der Anzahl deiner Einträge läuft und das den aktuellen Eintrag mit allen anderen Einträgen vergleicht.
3. Wenn eins davon gleich deinem aktuellen Eintrag ist, löschen.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du könntest auch vor dem Einfügen überprüfen, ob das Item schon drinnen ist.
Und wenn du Pointer in der Liste hast, kannst du dir überlegen, ob nur die fliegen, die auf die gleiche Adresse zeigen, oder auch die, bei denen das Objekt hinter dem Zeiger identisch ist (operator==(*current, *other)==true).

Bei Objekten (also keine Zeiger) musst du dir überlegen, ob du dann auch den operator== überladen musst.

Grüße
Franz
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

nkc hat geschrieben:2. for-Schleife, die bis zu der Anzahl deiner Einträge läuft und das den aktuellen Eintrag mit allen anderen Einträgen vergleicht.
Es reicht, wenn du von dem aktuellen Eintrag aus nur die Folgenden vergleichst, und die erste Schleife bei dem Vorletzten aufhörst, um es dann in der inneren Schleife mit dem letzten zu vergleichen (bei vielen Einträgen deutlicher Geschwindgkeitsvorteil).
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag von VuuRWerK »

Gleich ein QSet nehmen, wenn Du keinen Einfluss darauf hast dann so: QSet#fromList(QList)

Gut Schuß
VuuRWerK ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
The User
Beiträge: 62
Registriert: 11. Dezember 2008 23:48

Beitrag von The User »

Sorry, STL unique macht nicht das Gewünschte.
Wenn die Liste sehr groß ist, schreib die schon vorgekommenen in ein Hash-Set wie QSet, ansonsten sollte ein einfaches std::set besser sein.
madugi
Beiträge: 11
Registriert: 12. Februar 2009 09:19
Wohnort: Berlin

Beitrag von madugi »

Danke an Alle!!!

Die Lösung mit QSet hat das Rennen gewonnen.
Antworten