Wenn auf dem verwendeten Schlüssel einer Map der < - Operator nicht definiert ist, dann soll es zumindest möglich sein als dritten Typparamter bei der Erzeugung der Map eine alternative Vergleichsfunktion anzugeben. Kann mir jemand sagen wie ich diese Funktion angeben soll und vor allem, welchen Rückgabewert die Map für welches Vergleichsergebnis erwartet. Ich bin einmal davon ausgegangen:
1 wenn das Objekt größer ist als der Parameter, 0 bei Gleichheit -1 wenn es kleiner ist als der Parameter. Also analog zu den compareTo()-Methoden bei Java.
Trotzdem funkt’s nicht.
Hier ist das Beispiel das ich probiert habe:
Vielleicht kann mir jemand helfen.
Danke,
subatomic
#include <map>
#include <string.h>
class Name{
public:
char name[20];
Name(){}
Name(char *name){strcpy(this->name, name);}
int compareTo(Name &n){
return strncmp(name, n.name, 20);
}
};
int main(){
std::map<Name,Name, int Name::compareTo(Name &n)> m;
std::map<Name,Name, int Name::compareTo(Name &n)>::iterator i;
std:: pair<Name,Name> p;
p.first = *(new Name("Mueller"));
p.second = *(new Name("Josef"));
m.insert(p);
p.first = *(new Name("Faerber"));
p.second = *(new Name("Franz"));
m.insert(p);
p.first = *(new Name("Gerber"));
p.second = *(new Name("Hubert"));
m.insert(p);
for(i = m.begin(); i != m.end(); i++)
cout << i->second.name << endl;
return 0;
}