std::sort für vector of object



  • Hallo Leute,

    ich möchte mit der Sortierfunktion Flugzeuge nach Priorität sortieren. Ich möchte dies über std::sort realisieren, aber der Compiler akzeptiert die Struktur als 3.Parameter nicht. Wo liegt der Fehler?

    struct airplane_sort
    {
        bool operator()(airplane& a1,airplane& a2) const
        {
            return a1.getpriority() < a2.getpriority();
        }
    };
    
    void sort(vector<airplane>& liste)
    {
        std::sort(liste.begin(),liste.end(),airplane_sort);
    }
    
    //Fehler: 'Airport::airplane_sort': Ungültige Verwendung dieses Typs als Ausdruck
    

    Vielen Dank schon mal im Voraus für hilfreiche Antworten.



  • Du musst natürlich auch erst ein Objekt davon erzeugen. Also:

    std::sort(liste.begin(),liste.end(),airplane_sort);
    

    ->

    std::sort(liste.begin(),liste.end(),airplane_sort());
    


  • Vielen Dank!
    Hatte vorher beide Möglichkeiten ausprobiert und keines von beiden hat funktioniert. Hab aber gerade entdeckt, dass ich in einem unvorsichtigen Moment meinen Konstruktor halb gelöscht habe -.-

    Vielen Dank nochmal für die schnelle Antwort. Es funktioniert jetzt 🙂


  • Mod

    Dein Vergleichsobjekt braucht keinen Konstruktor. Bist du wieder einer von der Jürgen-Wolf-Schule des leeren Konstruktors? Warum den Vergleich überhaupt als Objekt, wenn er doch keinen Zustand hat? Da wäre doch eine Funktion angebracht.


Log in to reply