Vektor nach Membervariable der Klasse sortieren



  • Hallo,

    ich will einen Vektor, der aus Elementen einer eigenen Klasse besteht, nach Membervariablen dieser Klasse sortieren.
    Die Klasse sieht wie folgt aus:

    class Klausur
    {
    	private:
    		string teilnehmer;
    		int punkte[4];
    ...
    }
    

    Der Vektor:

    vector<Klausur> klausuren(3);
    

    Der String teilnehmer soll das Sortierkriterium sein.
    Einfach

    sort(klausuren.begin(),klausuren.end());

    klappt nicht.

    Wie bekomme ich den Vektor jetzt sortiert?

    Danke für die Hilfe



  • Deine klasse braucht einen operator <
    z.b.

    #include <vector>
    #include <algorithm>
    #include <string>
    
    using namespace std;
    
    class Klausur {
    public:
        Klausur() {}
        Klausur( const char * t ):teilnehmer(t) {}
        bool operator < (const Klausur & rhs ) const { return teilnehmer < rhs.teilnehmer; }
    private:
        string teilnehmer;
    };
    
    int main()  {
        std::vector<Klausur> klausuren;
        klausuren.push_back(Klausur("sepp"));
        klausuren.push_back(Klausur("karl"));
        klausuren.push_back(Klausur("josef"));
        sort(klausuren.begin(), klausuren.end() );    
    }
    

    Kurt



  • Hat geklappt

    Vielen Dank



  • Alternativ kannst auch einen 3. Parameter an sort() mit einer Compare funktion übergeben.


Anmelden zum Antworten