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 map, vamos aprender a criar um e adicionar pares de chave-valor a ele. Ao declarar um std::map, você precisa especificar tanto o tipo da chave quanto o tipo do valor usando sinais de menor e maior.
Aqui está a sintaxe básica para criar um mapa:
std::map<KeyType, ValueType> mapName;Por exemplo, para criar um map que armazena nomes de estudantes como chaves e suas notas de prova como valores:
std::map<std::string, int> studentScores;Para adicionar elementos ao seu map, 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 a pontuação correspondente.
Para iterar sobre todos os elementos de um mapa, você pode usar um laço for baseado em range com auto. Cada elemento em um std::map é um par de chave e 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 por chave, portanto, 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 notas como valores.
As seguintes entradas serão fornecidas:
- Um inteiro
nrepresentando o número de alunos - Em seguida,
npares de entradas:- Uma string representando o nome do aluno
- Um 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 sua nota e, em seguida, adicioná-los ao mapa usando a notação de colchetes
- Depois de 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 exato de saída:
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, pois os mapas classificam automaticamente pelas chaves). Use um loop for baseado em intervalo para iterar pelo mapa, acessando cada par de chave e 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() {
// Ler o número de alunos
int n;
cin >> n;
// Criar o map para armazenar as notas
map<string, int> grades;
// TODO: Escreva seu código aqui
// Ler o nome e a nota de cada aluno e adicionar ao map
// Imprimir os resultados
cout << "Student Grades:" << endl;
// TODO: Use um loop for baseado em intervalo para imprimir a nota de cada aluno
// Imprimir 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 TarefaPratique por conta própria: Compilador de C++ online