Vector inhalt sortieren
-
bool less_name(const XXX& a, const XXX& b) { return a.name < b.name; } /* ... */ std::sort(list.begin(), list.end(), less_name);in sort was soll ich übergeben bei aufruf less_name.
less_name ist ein Funktionsname oder!
-
error C2065: 'a': nichtdeklarierter Bezeichner
error C2065: 'b': nichtdeklarierter Bezeichner
-
Dann machst Du es falsch.
(Sorry, aber weniger informativ ging wohl wirklich nicht
)EDIT: ja, "less_name" ist der Name der Funktion.
-
#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
Wasfür eine Fehlermeldung?error C2065: 'a': nichtdeklarierter Bezeichner
error C2065: 'b': nichtdeklarierter Bezeichner
-
dokdok schrieb:
error C2065: 'a': nichtdeklarierter Bezeichner
error C2065: 'b': nichtdeklarierter BezeichnerStimmen 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 gingdanke