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!

Était-ce utile?

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
scroll top