Criando um Mapa
Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 24 de 56.
Agora que você entende o que é um mapa, vamos aprender como criar um e adicionar pares chave-valor a ele. Ao declarar um std::map, você precisa especificar tanto o tipo da chave quanto o tipo do valor usando colchetes angulares.
Aqui está a sintaxe básica para criar um mapa:
std::map<KeyType, ValueType> mapName;Por exemplo, para criar um mapa que armazena nomes de alunos como chaves e suas pontuações em testes como valores:
std::map<std::string, int> studentScores;Para adicionar elementos ao seu mapa, você pode usar a notação de colchetes com a chave e, em seguida, atribuir um valor:
studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;Isso cria três pares de chave-valor no mapa. O nome de cada aluno serve como a chave que permite recuperar rapidamente sua pontuação correspondente.
Para iterar sobre todos os elementos em um mapa, você pode usar um loop for baseado em intervalo com auto. Cada elemento em um std::map é um par chave-valor, e você pode acessar a chave usando .first e o valor usando .second:
for (const auto& pair : studentScores) {
std::cout << pair.first << ": " << pair.second << std::endl;
}Aqui, auto deduz automaticamente o tipo de cada elemento (um par chave-valor), pair.first fornece a chave (o nome do aluno) e pair.second fornece o valor (a pontuação). Observe que std::map mantém automaticamente seus elementos ordenados pela chave, então iterar sobre o mapa imprimirá as entradas em ordem alfabética.
Desafio
FácilCrie um programa que construa um sistema de acompanhamento de notas de alunos usando um std::map. Seu programa armazenará os nomes dos alunos como chaves e suas pontuações nos testes como valores.
As seguintes entradas serão fornecidas:
- Um número inteiro
nrepresentando o número de alunos - Em seguida,
npares de entradas:- Uma string representando o nome do aluno
- Um número inteiro representando a nota do aluno
Seu programa deve:
- Criar um
std::map<std::string, int>chamadogrades - Ler o número de alunos
- Para cada aluno, ler seu nome e nota, e então adicioná-los ao mapa usando a notação de colchetes
- Após adicionar todos os alunos, imprimir as informações de cada aluno no formato mostrado abaixo
- Calcular e imprimir o número total de alunos armazenados no mapa
Use o seguinte formato de saída exato:
Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]Os alunos devem ser impressos na ordem em que aparecem ao iterar pelo mapa (que será a ordem alfabética, já que os mapas ordenam automaticamente pela chave). Use um loop for baseado em intervalo (range-based for loop) para iterar pelo mapa, acessando cada par chave-valor e imprimindo o nome do aluno seguido de sua nota.
Experimente você mesmo
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Lê o número de alunos
int n;
cin >> n;
// Cria o mapa para armazenar as notas
map<string, int> grades;
// TODO: Escreva seu código aqui
// Lê o nome e a pontuação de cada aluno e, em seguida, adiciona ao mapa
// Imprime os resultados
cout << "Student Grades:" << endl;
// TODO: Use um loop for baseado em intervalo para imprimir a nota de cada aluno
// Imprime o número total de alunos
cout << "Total students: " << grades.size() << endl;
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros4Mapas (Pares Chave-Valor)
Introdução ao std::mapCriando um MapaAcessando e Modificando ValoresVerificando ChavesRemovendo ParesIterando sobre um MapaRecapitulação - Frequência de Palavras2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma Tarefa