J'essaye d'obtenir l'élément avec la valeur max de 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;
}
pourquoi il imprime le deuxième élément 2 : -1
?
Extrait de ici :
auto x = std::max_element(m.begin(), m.end(),
[](const pair<int, int>& p1, const pair<int, int>& p2) {
return p1.second < p2.second; });
Au lieu d'utiliser std::map::value_comp()
(qui compare les valeurs de clé), ceci examine le membre second
de la paire, qui contient la valeur. Cela utilise une expression lambda, vous devrez donc compiler avec le support C++ 11
http://www.cplusplus.com/reference/map/map/value_comp/
Returns a comparison object that can be used to compare two elements to get whether
the key of the first one goes before the second.
et 2> 1. value_comp
compare les valeurs de la clé , pas les valeurs de valeur. Parce que c'est comme ça que C++ roule.