std::max_element(...)
-
hallo!
ich möchte mithilfe von max_element das älteste tier herausfinden.
wir sollen Polymorphi verwenden:vector<animal*> tiere; cow c("Birgit", dat, 12.2, 80.0, 4, 30.6, 10.6, 10.5 ); animal* a1= &c; tiere.push_back(a1); ausgabe(a1); chicken ch("Iris", dat, 12.2, 80.0, 2, 20, 123.6, 55.5 ); animal* a2 = &ch; tiere.push_back(a2); ausgabe(a2); animal* oldest = std::max_element(*tiere.begin(), *tiere.end(),alt); } bool alt(animal i, animal j) { datum* a = i.gebdatum(); datum* b = j.gebdatum(); return(bool) (&a<&b); }Ich erhalte nun einen Segfault. Der hund ist dahin begraben, dass ich die animals als Zeiger speichere. Wie kann ich nun auf diese in max_element richtig zugreifen?
-
Deine Vergleichsfunktion muss den gleichen Typen annehmen, wie im Container gespeichert sind. Also Zeiger auf animal.
edit: Und du darfst beim Aufruf von max_element natürlich nicht die Iteratoren dereferenzieren.
-
ahhh, genau!
das wars jetzt gehts ich danke dir!