Menu
Coddy logo textTech

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.

challenge icon

Desafio

Fácil

Crie 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 n representando o número de alunos
  • Em seguida, n pares de entradas:
    • Uma string representando o nome do aluno
    • Um inteiro representando a nota do aluno

Seu programa deve:

  1. Criar um std::map<std::string, int> chamado grades
  2. Ler o número de alunos
  3. Para cada aluno, ler seu nome e sua nota e, em seguida, adicioná-los ao mapa usando a notação de colchetes
  4. Depois de adicionar todos os alunos, imprimir as informações de cada aluno no formato mostrado abaixo
  5. 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;
}
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Compilador de C++ online