Entfernen Sie doppelte Objekt aus QList

Ich habe eine QList<MyData>, wo MyData 2 Mitglied int id (einmalig) und QString name. Ich möchte entfernen Sie alle doppelten Einträge basierend auf name, und dieser Eintrag muss den höchsten id zwischen anderen Objekt mit dem gleichen name. Jeder Vorschlag, wie zu tun es auf dem schnellsten Weg? Performance ist ein sehr wichtiger Faktor hier.

Einige von meiner Idee, nach dem Google-ed für den ganzen Tag:

  • qStableSort() es basiert auf der id (absteigend), dann eine Schleife durch die QList, dann für jeden Eintrag, kopieren Sie den Eintrag auf einen anderen neuen QList wenn die name ist nicht vorhanden auf dem neuen QList
  • verwenden QList::toSet (die alle entfernen doppelter Eintrag), und die operator==() und ein qHash () - Implementierung basiert auf name, aber der Eintrag eindeutig ist, möglicherweise nicht die höchste id
  • verwenden std::list::unique, aber ich bin mir nicht sicher, wie es funktioniert.
  • Unter Verwendung der standard-C++ - Bibliotheken-Funktionalität (entweder std::list::unique oder die Allgemeine std::unique - Funktion) bedeutet, Sie müssen kopieren der Daten in einen standard-container, und dann kopieren Sie Sie zurück auf die QList.
InformationsquelleAutor Dickson | 2013-01-14
Schreibe einen Kommentar