Acessando variáveis de membros através do Boost Lambda, espaço reservado
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!
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