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!

È stato utile?

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