Pergunta

Estou tentando imprimir a variável de segundo membro de todos os itens em um mapa STL usando uma expressão lambda

map<int, int> theMap;
for_each(theMap.begin(), theMap.end(), 
         cout << bind(&pair<int, int>::second, _1) << constant(" "));

Mas isso não está compilando. Eu essencialmente quero devolver o espaço reservado. Alguma ideia do que estou perdendo aqui?

Desde já, obrigado!

Foi útil?

Solução

std::map adicionará const à sua chave; Isso evita estragar a ordem. Seu par deve ser:

std::pair<const int, int>

Como sugere Dirkgentemente, use o value_type para sempre obter o tipo correto. A verbosidade é aliviada com um typedef:

typedef std::map<int, int> int_map;

int_map::value_type::second

Outras dicas

Tentar:

for_each(theMap.begin(), theMap.end(), 
         cout << bind(&map<int, int>::value_type::second, _1) << constant(" "));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top