Wyszukiwanie wartości w mapie
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 55 z 56.
Wyzwanie
ŁatwyUtwórz program implementujący system odwrotnego wyszukiwania, który znajduje wszystkie klucze powiązane z określoną wartością w mapie. To wyzwanie sprawdzi Twoją umiejętność łączenia iteracji po mapie, porównywania wartości i tworzenia wektora, aby efektywnie przeszukiwać pary klucz-wartość.
Podane zostaną następujące dane wejściowe:
- Liczba całkowita
nreprezentująca liczbę par klucz-wartość, które należy dodać do mapy - Następnie
npar danych wejściowych, z których każda składa się z:- Ciągu znaków
keyreprezentującego klucz - Liczby całkowitej
valuereprezentującej wartość
- Ciągu znaków
- Liczba całkowita
targetValuereprezentująca wartość, której należy szukać
Twój program powinien:
- Utworzyć funkcję o nazwie
findKeysWithValue, która przyjmuje jako parametrystd::map<std::string, int>oraz liczbę całkowitą - Funkcja powinna zwracać
std::vector<std::string>zawierający wszystkie klucze o określonej wartości - W funkcji main utworzyć mapę i wypełnić ją wejściowymi parami klucz-wartość
- Wywołać funkcję
findKeysWithValue, przekazując jej mapę i wartość docelową - Najpierw wypisać liczbę pasujących kluczy, a następnie każdy pasujący klucz w osobnym wierszu
Użyj następującego dokładnego formatu wyjściowego:
Pierwszy wiersz — liczba pasujących kluczy:
Keys found: [number_of_matching_keys]Następnie każdy pasujący klucz w osobnym wierszu:
[matching_key_1]
[matching_key_2]
...Jeśli żaden klucz nie ma wartości docelowej, wypisz tylko:
Keys found: 0Pamiętaj, że funkcja findKeysWithValue powinna utworzyć nowy pusty wektor, iterować po mapie za pomocą pętli for opartej na zakresie i użyć instrukcji if, aby sprawdzić wartość każdej pary w porównaniu z wartością docelową. Po znalezieniu pasującej wartości dodaj klucz (dostępny przez pair.first) do wektora wynikowego za pomocą push_back(). Funkcja powinna zwrócić wektor zawierający wszystkie pasujące klucze.
Spróbuj swoich sił
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
// TODO: Napisz tutaj funkcję findKeysWithValue
int main() {
// Wczytaj liczbę par klucz-wartość
int n;
cin >> n;
// Utwórz mapę do przechowywania par klucz-wartość
map<string, int> keyValueMap;
// Wczytaj n par klucz-wartość
for (int i = 0; i < n; i++) {
string key;
int value;
cin >> key >> value;
keyValueMap[key] = value;
}
// Wczytaj wartość docelową do wyszukania
int targetValue;
cin >> targetValue;
// TODO: Wywołaj funkcję findKeysWithValue i zapisz wynik
// TODO: Wypisz wyniki w wymaganym formacie
// Najpierw wypisz "Keys found: [count]"
// Następnie wypisz każdy pasujący klucz w osobnym wierszu
return 0;
}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źnikami2Wektory (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 zadania6Zbiory (unikalne elementy)
Wprowadzenie do std::setTworzenie zbioru i dodawanie elementówSprawdzanie obecności elementówUsuwanie elementówIterowanie po zbiorzePodsumowanie — unikalne liczby9Końcowe wyzwania
Filtrowanie danych w wektorzeWyszukiwanie wartości w mapieWskaźnik i tablica dynamicznaPoćwicz samodzielnie: Kompilator C++ online