c++ - find element with max value from std::map -


this question has answer here:

i'm trying element max value std::map,

int main() {     map<int, int> m;     m[1] = 100;     m[2] = -1;      auto x = std::max_element(m.begin(), m.end(), m.value_comp());      cout << x->first << " : " << x->second << endl; } 

why prints second element 2 : -1 ?

taken here:

auto x = std::max_element(m.begin(), m.end(),     [](const pair<int, int>& p1, const pair<int, int>& p2) {         return p1.second < p2.second; }); 

this, rather using std::map::value_comp() (which compares key values) looks @ second member in pair, contains value. uses lambda expression, have compile c++11 support


Comments