max_element auf Schlüssel/Werte von map anwenden
-
Hallo,
gibt es eine Möglichkeit, max_element (aus der STL) auf die Schlüssel oder Werte einer map anzuwenden?
-
Die Klasse map selbst ist nach Schlüsseln sortiert, also brauchst Du hier nur das letzte Element heranzuziehen, wenn Du das Maximum nach Schlüssel suchst.
Für die Werte kannst Du max_element mit einem Prädikat benutzen:
typedef std::map< ... > mymap_t; struct less_value { bool operator()( mymap_t::value_type const& l, mymap_t::value_type const& r ) { return l.second < r.second; // second ist der Wert eines Map-Elementpaars } }; mymap_t mymap; max_element( mymap.begin(), mymap.end(), less_value() );
EDIT:
Grundsätzlich lässt sich die Funktion max_element (durch Ersetzen von second durch first im Prädikat) auch auf die Schlüssel anwenden. Das ist aus performancetechnischer Sicht aber Unsinn, da die Map wie gesagt bereits sortiert ist.EDIT2:
Und das Prädikat sollte vielleicht auch less_value (vorher less_key) heissen, wenn es sich auf Werte bezieht