vector sortieren und unique ??? funzt nicht
-
Hi
Ich habe folgende Strukturen:struct person { string vname; string nname; int gebdate; }; vector<person> p1 vector<person> p2 bool compare_persons (const person &a, const person &b) { return a.gebdate < b.gebdate; } bool unique_persons(const person &a, const person &b) { return (a.nname == b.nname && a.gebdate == b.gebdate); } sort(p1.begin(),p1.end(),compare_persons); sort(p2.begin(),p2.end(),compare_persons); unique(p2.begin(),p2.end(),unique_persons); unique(p2.begin(),p2.end(),unique_persons);Das Problem ist das sort und unique nicht funktioniert? Er sortiert einfach nicht nach dem Geburtsdatum aber wieso?
Bitte um Hilfe oder geht das sort, unique nur in der List. Glaub aber nicht.danke
mfg
1metal3
-
Wie genau äußert sich denn das Problem? sort() sollte eigentlich das richtige Ergebnis liefern.
Dein Problem könnte höchstens sein, daß unique() nicht in der Lage ist, Objekte physikalisch zu löschen. Deshalb gibt es einen Iterator auf das neue Ende des Bereiches zurück und lässt alles dahinter unberührt (auftretende Lücken, wenn ein Duplikat rausgeworfen wurde, werden mit den nachfolgenden Elementen überschrieben) - löschen mußt du diesen Schwanz dann selber:
p1.erase(unique(p1.begin(),p1.end(),unique_persons),p1.end());PS: Ist es eigentlich Absicht, daß du zweimal den selben Vector an unique übergibst?
-
danke
bei unique soll natürlich einmal p1 und einmal p2 drankkommen.Problem ist einfach das die Ausgabe nicht sortiert nach Geburtsdatum ist.
ich teste mal weiter, mal sehen,
danke
-
1metal3 schrieb:
Problem ist einfach das die Ausgabe nicht sortiert nach Geburtsdatum ist.
Da hast du den Fehler woanders gemacht (sort() sortiert korrekt, und dein Vergleichsattribut sieht auch gut aus) - zeig doch mal ein etwas ausführlicheres Beispiel.
-
das unique mit erase hat die Lösung gebracht
vielen dank
mfg
1metal3