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.
Wyzwanie
ŁatwyUtwó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
nokreślająca liczbę uczniów - Następnie
npar danych wejściowych:- Łańcuch znaków reprezentujący imię i nazwisko ucznia
- Liczba całkowita reprezentująca wynik ucznia
Twój program powinien:
- Utworzyć
std::map<std::string, int>o nazwiegrades - Wczytać liczbę uczniów
- Dla każdego ucznia wczytać jego imię i nazwisko oraz wynik, a następnie dodać je do mapy za pomocą notacji nawiasów kwadratowych
- Po dodaniu wszystkich uczniów wypisać informacje o każdym z nich w formacie pokazanym poniżej
- 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;
}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
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami4Mapy (pary klucz–wartość)
Poznajemy std::mapTworzenie mapyOdczytywanie i modyfikowanie wartościSprawdzanie kluczyUsuwanie parIterowanie po mapiePodsumowanie – częstość występowania słów2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online