Duplikate aus vector entfernen



  • Hallo,

    ich möchte aus einem std::vector doppelte Einträge entfernen.
    Funktioniert da folgendes:

    std::vector<...> vect;
    std::vector<...>::iterator it;
    it = std::unique(vect.begin(), vect.end());
    vect.erase(it, vect.end());
    

    oder muss ich den vector vorher noch sortieren.
    Will das nicht erst ausprobieren und wollte fragen, ob einer sagen kann: "Das funktioniert!"

    Grüße Verge


  • Mod

    unique entfernt nur benachbarte gleiche Elemente (sonst wäre eine Komplexität von O(N) auch nich erreichbar).



  • Oder auf deutsch: Nein, es entfernt nicht alle Duplikate aus deinem vector. Dazu musst du den vector entweder sortieren oder die eine eigene Funktion schreiben (oder besorgen - eine mögliche Lösung findest du in meinem Artikel "Aufbau der STL - Teil 3").


Anmelden zum Antworten