Vector inhalt sortieren



  • #include <vector>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct XXX
    {
        string lastname;
        int age;
        XXX(string l, int a) : lastname(l), age(a){}
    };
    bool operator<(const XXX& X1, const XXX& X2)
    {
        return X1.lastname < X2.lastname;
    }
    
    int main()
    {
        vector <XXX> List;
        List.push_back(XXX("Bernie", 15));
        List.push_back(XXX("Cernie", 11));
        List.push_back(XXX("Aernie", 17));
        List.push_back(XXX("Dernie", 19));
    
        sort (List.begin(), List.end());
        for(vector<XXX>::iterator i = List.begin(); i != List.end(); ++i)
            cout << i->lastname << " ist " << i->age << endl;
    }
    


  • Ok, operator< ist einfacher als less_name, das gebe ich zu 😉

    @dokdok: Wenn das Beispiel von KPC so bei Dir funzt, müsstest Du auch herausfinden warum das mit less_name nicht ging, das ist nämlich bis auf den Namen "less_name" (und dessen Angabe hinten bei sort(...)) völlig identisch.



  • Ja es hat geklappt mit Operator danke.
    mit less_name aber nicht. der debbger wirft mich in algorithm classe



  • dokdok schrieb:

    mit less_name aber nicht. der debbger wirft mich in algorithm classe

    Randfrage: Was für eine Fehlermeldung?



  • Folgendes funktioniert bei mir ebenfalls:

    bool compare(const XXX& X1, const XXX& X2)
    {
        return X1.lastname < X2.lastname;
    }
    
    //...
    sort (List.begin(), List.end(),compare);
    

    Der restliche Code wie eben!

    KaPtainCugel



  • müssen unbedingt vector sein?
    List ist effektiver falls es sich um insert, sortierung geht



  • netrobot schrieb:

    müssen unbedingt vector sein?

    Muß nicht - sort() arbeitet mit allem zusammen, was einen Random-Access-Iterator bereitstellt (vector, deque, C-Style Arrays).

    List ist effektiver falls es sich um insert, sortierung geht

    list hat keine Random-Access-Iteratoren, da funktioniert sort() nicht - aber list hat eine Memberfunktion, die das ersetzt.

    (PS: Du könntest auch ein set verwenden, da brauchst du nicht mehr zu sortieren ;))



  • CStoll schrieb
    Was

    für eine Fehlermeldung?
    

    error C2065: 'a': nichtdeklarierter Bezeichner
    error C2065: 'b': nichtdeklarierter Bezeichner



  • dokdok schrieb:

    error C2065: 'a': nichtdeklarierter Bezeichner
    error C2065: 'b': nichtdeklarierter Bezeichner

    Stimmen denn die Parameternamen der Funktion less_name mit den Bezeichnern überein, die in der Funktion verwendet wurden?



  • Und Du bist die sicher, dass Du an dem Code den ich gepostet habe nichts verändert hast, ja? 😉



  • Also Fehlalarm.
    ich ziehe meine reklamme zurück.
    ihe habt recht.
    ich habe was falsch gemacht aber leider habe übersehen . kann ich nicht feststellen was.
    habe es wiederholt und es ging

    danke


Anmelden zum Antworten