Menu
Coddy logo textTech

Tworzenie mapy

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 24 z 56.

Skoro wiesz już, czym jest mapa, nauczmy się ją tworzyć i dodawać do niej pary klucz-wartość. Podczas deklarowania std::map musisz określić zarówno typ klucza, jak i typ wartości, używając nawiasów ostrych.

Oto podstawowa składnia tworzenia mapy:

std::map<KeyType, ValueType> mapName;

Na przykład, aby utworzyć mapę, która przechowuje imiona uczniów jako klucze, a ich wyniki testów jako wartości:

std::map<std::string, int> studentScores;

Aby dodać elementy do mapy, możesz użyć notacji nawiasów kwadratowych z kluczem, a następnie przypisać wartość:

studentScores["Alice"] = 95;
studentScores["Bob"] = 87;
studentScores["Carol"] = 92;

Tworzy to trzy pary klucz-wartość w mapie. Imię i nazwisko każdego ucznia służy jako klucz, który umożliwia szybkie pobranie odpowiadającego mu wyniku.

Aby przejść przez wszystkie elementy mapy, możesz użyć pętli for opartej na zakresie z auto. Każdy element w std::map jest parą klucz-wartość. Klucz możesz uzyskać za pomocą .first, a wartość za pomocą .second:

for (const auto& pair : studentScores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Tutaj auto automatycznie określa typ każdego elementu (pary klucz-wartość), pair.first zwraca klucz (imię ucznia), a pair.second zwraca wartość (wynik). Pamiętaj, że std::map automatycznie sortuje elementy według klucza, więc iterowanie po mapie wypisze wpisy w kolejności alfabetycznej.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który zbuduje system śledzenia ocen uczniów przy użyciu std::map. Program będzie przechowywać imiona i nazwiska uczniów jako klucze, a wyniki ich testów jako wartości.

Podane zostaną następujące dane wejściowe:

  • Liczba całkowita n określająca liczbę uczniów
  • Następnie n par danych wejściowych:
    • Łańcuch znaków reprezentujący imię i nazwisko ucznia
    • Liczba całkowita reprezentująca wynik ucznia

Twój program powinien:

  1. Utworzyć std::map<std::string, int> o nazwie grades
  2. Wczytać liczbę uczniów
  3. Dla każdego ucznia wczytać jego imię i nazwisko oraz wynik, a następnie dodać je do mapy za pomocą notacji nawiasów kwadratowych
  4. Po dodaniu wszystkich uczniów wypisać informacje o każdym z nich w formacie pokazanym poniżej
  5. Obliczyć i wypisać łączną liczbę uczniów przechowywanych w mapie

Użyj następującego dokładnego formatu wyjściowego:

Student Grades:\n[student1]: [score1]\n[student2]: [score2]\n[student3]: [score3]\n...\nTotal students: [number of students]

Uczniowie powinni być wypisani w kolejności, w jakiej pojawiają się podczas iteracji po mapie (czyli alfabetycznie, ponieważ mapy automatycznie sortują elementy według klucza). Użyj pętli opartej na zakresie, aby iterować po mapie, uzyskać dostęp do każdej pary klucz-wartość i wypisać imię i nazwisko ucznia, a następnie jego wynik.

Spróbuj swoich sił

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Wczytaj liczbę uczniów
    int n;
    cin >> n;
    
    // Utwórz mapę do przechowywania ocen
    map<string, int> grades;
    
    // TODO: Napisz tutaj swój kod
    // Wczytaj imię i wynik każdego ucznia, a następnie dodaj je do mapy
    
    
    // Wyświetl wyniki
    cout << "Student Grades:" << endl;
    // TODO: Użyj pętli for opartej na zakresie, aby wyświetlić ocenę każdego ucznia
    
    
    // Wyświetl łączną liczbę uczniów
    cout << "Total students: " << grades.size() << endl;
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online