Wie kann ich in c ++ 11 std :: max auf einem Vektor aufrufen?

7

Ich habe eine vector<data> (wobei data meine eigene Haustierart ist) und ich möchte den maximalen Wert finden.

Die Standardfunktion std::max in C ++ 11 scheint in einer Sammlung von Objekten zu funktionieren, aber sie möchte eine Initialisierungsliste als erstes Argument und keine Sammlung wie vector :

%Vor%

Wie kann ich das lösen?

    
Fabien 27.11.2013, 09:37
quelle

2 Antworten

18

Die std::max Überladungen sind nur für kleine Sätze, die zur Kompilierungszeit bekannt sind. Was Sie brauchen, ist std::max_element (was sogar vor 11 ist). Dadurch wird ein Iterator an das maximale Element einer Auflistung (oder eines beliebigen Iteratorbereichs) zurückgegeben:

%Vor%     
Christian Rau 27.11.2013, 09:43
quelle
1

Wahrscheinlich mit Lambda flexibler

%Vor%

Sie sollten nur den Vergleichsoperator für Ihren Typ "Daten" über data::operator < ()

implementieren     
angevad 28.11.2013 14:41
quelle

Tags und Links