1
resposta

Dúvida sobre o MAP

O map do C++ ainda não ficou claro, os input do tipo char ficam armazenados lá, com as suas chaves e valores? Então os chutes errados também estariam no map?.

Se a chave do map é um char e o valor é um bool

        for(char letra : PALAVRA_SECRETA) {
            if(chutou[letra]) {
                cout << letra << " ";
            } else {
                cout << "_ ";
            }
        }

O if só tá verificando cada carácter da PALAVRA_SECRETA. Mas e o bool do map, não tá sendo usado?

1 resposta

O char é a chave/índice e o bool é o valor, então quando você roda o comando chutou[letra], ele retorna true ou false. Pelo que entendi, os valores são automaticamente inicializados como false, então, a cada chute do usuário, você precisa verificar se há no map algum índice correspondente à letra chutada (variável chute) e defini-la como true, por isso o comando chutou[chute] = true. No código que você colou, para cada letra da palavra secreta, o if verifica o valor (true ou false) do map chutou na posição letra (isto é, se aquela letra já foi chutada), imprimindo a própria letra, se existir, ou _ , caso não exista. Espero ter ajudado.