Accesso alle variabili membro attraverso spinta lambda segnaposto
Domanda
Sto cercando di stampare il secondo variabile membro di tutti gli elementi in una mappa STL utilizzando un'espressione lambda
map<int, int> theMap;
for_each(theMap.begin(), theMap.end(),
cout << bind(&pair<int, int>::second, _1) << constant(" "));
, ma questo non è la compilazione. Io essenzialmente voglio de-riferimento il segnaposto. Qualche idea di cosa mi manca qui?
Grazie in anticipo!
Soluzione
std::map
aggiungerà const
alla sua chiave; questo è quello di evitare che rovinare l'ordinamento. La vostra coppia dovrebbe essere:
std::pair<const int, int>
Come suggerisce dirkgently, utilizzare il value_type
per ottenere sempre il tipo corretto. Il livello di dettaglio è alleviato con un typedef:
typedef std::map<int, int> int_map;
int_map::value_type::second
Altri suggerimenti
Prova:
for_each(theMap.begin(), theMap.end(),
cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow