STL: sort mit selbstdefinierten Datentypen



  • Hallo,

    folgendes Beispiel:

    //mein Datentyp
    struct Klasse
      {
      Klasse(int w) {this->wert= w}; //nur zum einfacheren Befuellen 
      int wert;
      bool operator<(const Klasse& klasse) const
         {
         return ( this->wert < klasse.wert );
         }
      };
    
    //meine Liste und befuellen
    list<Klasse> klassen;
    klassen.push_back(  Klasse(5)  );
    klassen.push_back(  Klasse(17) );
    klassen.push_back(  Klasse(3)  );
    klassen.push_back(  Klasse(19) );
    klassen.push_back(  Klasse(9)  );
    
    //Sortieren lassen
    sort(klassen.begin(), klassen.end());
    

    Nach meinen Quelle sollte die Sortierung nun möglich sein, da er implizit meine eigenen Datentyp "Klassen" vergleichen.

    Was mache ich falsch?

    Danke


  • Mod

    der std::sort algorithmus benötigt randomaccess iteratoren, und kann folglich nicht mit listen verwendet werden. allerdings besitzt std::list eine memberfunktion sort (bzw. eine template memberfunktion um ein eigenes prädikat zu benutzen).

    //Sortieren lassen
    klassen.sort();
    


  • Vielen Dank, das ist eine schöne und funktionierende Lösung.


Anmelden zum Antworten