Sprawdzanie kluczy
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 26 z 56.
Chociaż operator nawiasów kwadratowych jest wygodny do uzyskiwania dostępu do wartości mapy, może pojawić się problem: co się stanie, jeśli spróbujesz uzyskać dostęp do nieistniejącego klucza? Jak dowiedziałeś się w poprzedniej lekcji, użycie [] z nieistniejącym kluczem automatycznie tworzy ten klucz z wartością domyślną.
Czasami chcesz sprawdzić, czy klucz istnieje, zanim uzyskasz do niego dostęp, nie tworząc przypadkowo nowych wpisów. Właśnie wtedy przydaje się metoda .count(). Informuje, czy określony klucz znajduje się w mapie.
Metoda .count() zwraca 1, jeśli klucz istnieje, a 0, jeśli nie istnieje:
std::map<std::string, int> scores;
scores["Alice"] = 95;
if (scores.count("Alice")) {
std::cout << "Alice's score: " << scores["Alice"] << std::endl;
} else {
std::cout << "Alice not found" << std::endl;
}To podejście pozwala bezpiecznie sprawdzić, czy klucz istnieje, i odpowiednio obsłużyć oba przypadki, zapobiegając tworzeniu niepożądanych wpisów w mapie.
Wyzwanie
ŁatwyUtwórz program, który zarządza systemem wypożyczania książek z biblioteki za pomocą std::map. Twój program będzie śledzić, które książki są dostępne, i używać metody .count(), aby bezpiecznie sprawdzać, czy książki istnieją, zanim spróbuje uzyskać dostęp do ich informacji.
Podane zostaną następujące dane wejściowe:
- Liczba całkowita
nreprezentująca liczbę książek w bibliotece - Następnie
npar danych wejściowych:- Ciąg znaków reprezentujący tytuł książki
- Liczba całkowita reprezentująca liczbę dostępnych egzemplarzy
- Liczba całkowita
mreprezentująca liczbę zapytań o książki do sprawdzenia - Następnie
mciągów znaków reprezentujących tytuły książek do wyszukania
Twój program powinien:
- Utworzyć
std::map<std::string, int>o nazwielibrary - Wczytać liczbę książek i wypełnić mapę tytułami książek oraz liczbą dostępnych egzemplarzy
- Wczytać liczbę zapytań o książki
- Dla każdego zapytania o książkę użyć metody
.count(), aby sprawdzić, czy książka istnieje w bibliotece - Wypisać odpowiedni komunikat w zależności od tego, czy książka została znaleziona
Użyj następującego dokładnego formatu wyjściowego:
Dla każdego zapytania o książkę:
- Jeśli książka istnieje:
Book "[book title]" is available with [number] copies - Jeśli książka nie istnieje:
Book "[book title]" is not available in the library
Użyj metody .count() w instrukcji if, aby sprawdzić, czy książka istnieje, zanim uzyskasz dostęp do jej wartości. Jeśli library.count(bookTitle) zwróci 1, książka istnieje i możesz bezpiecznie uzyskać dostęp do library[bookTitle], aby pobrać liczbę egzemplarzy. Jeśli zwróci 0, książka nie istnieje w bibliotece.
Spróbuj swoich sił
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Wczytaj liczbę książek
int n;
cin >> n;
// Utwórz mapę biblioteki
map<string, int> library;
// Wczytaj informacje o książkach i wypełnij mapę
for (int i = 0; i < n; i++) {
string title;
int copies;
cin >> title >> copies;
library[title] = copies;
}
// Wczytaj liczbę zapytań o książki
int m;
cin >> m;
// TODO: Napisz swój kod poniżej
// Przetwórz każde zapytanie o książkę, używając metody .count()
// Sprawdź, czy książka istnieje, i wypisz odpowiedni komunikat
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