Accéder à des variables membres par impulsion espace réservé lambda
Question
Je suis en train d'imprimer la deuxième variable membre de tous les éléments d'une carte stl en utilisant une expression lambda
map<int, int> theMap;
for_each(theMap.begin(), theMap.end(),
cout << bind(&pair<int, int>::second, _1) << constant(" "));
mais cela ne compile. Je veux essentiellement de-référence à l'espace réservé. Toute idée de ce que je manque ici?
Merci d'avance!
La solution
std::map
ajoutera à la clé de son const
; ceci pour éviter de gâcher la commande. Votre paire devrait être:
std::pair<const int, int>
Comme suggère dirkgently, utilisez le value_type
pour obtenir toujours le bon type. La verbosité est un typedef allégé:
typedef std::map<int, int> int_map;
int_map::value_type::second
Autres conseils
Essayez:
for_each(theMap.begin(), theMap.end(),
cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow