Map-Wertsuche
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 55 von 56.
Aufgabe
EinfachErstellen Sie ein Programm, das ein Reverse-Lookup-System implementiert, um alle Schlüssel zu finden, die einem bestimmten Wert in einer Map zugeordnet sind. Diese Herausforderung testet Ihre Fähigkeit, Map-Iteration, Wertvergleiche und den Aufbau von Vektoren zu kombinieren, um Schlüssel-Wert-Paare effizient zu durchsuchen.
Die folgenden Eingaben werden bereitgestellt:
- Eine Ganzzahl
n, die die Anzahl der Schlüssel-Wert-Paare darstellt, die der Map hinzugefügt werden sollen - Anschließend
nPaare von Eingaben, jeweils bestehend aus:- Einem String
key, der den Schlüssel darstellt - Einer Ganzzahl
value, die den Wert darstellt
- Einem String
- Einer Ganzzahl
targetValue, die den zu suchenden Wert darstellt
Ihr Programm sollte:
- Eine Funktion namens
findKeysWithValueerstellen, die einestd::map<std::string, int>und eine Ganzzahl als Parameter entgegennimmt - Die Funktion sollte einen
std::vector<std::string>zurückgeben, der alle Schlüssel enthält, die den angegebenen Wert haben - In der Hauptfunktion eine Map erstellen und sie mit den eingegebenen Schlüssel-Wert-Paaren füllen
- Die Funktion
findKeysWithValuemit der Map und dem Zielwert aufrufen - Zuerst die Anzahl der übereinstimmenden Schlüssel ausgeben und dann jeden übereinstimmenden Schlüssel in einer separaten Zeile ausgeben
Verwenden Sie das folgende exakte Ausgabeformat:
Erste Zeile - Anzahl der übereinstimmenden Schlüssel:
Keys found: [number_of_matching_keys]Dann jeder übereinstimmende Schlüssel in separaten Zeilen:
[matching_key_1]
[matching_key_2]
...Wenn keine Schlüssel den Zielwert haben, geben Sie nur Folgendes aus:
Keys found: 0Denken Sie daran, dass Ihre Funktion findKeysWithValue einen neuen leeren Vektor erstellen, die Map mit einer bereichsbasierten for-Schleife durchlaufen und eine if-Anweisung verwenden sollte, um den Wert jedes Paares mit dem Zielwert zu vergleichen. Wenn eine Übereinstimmung gefunden wird, fügen Sie den Schlüssel (auf den über pair.first zugegriffen wird) mit push_back() zum Ergebnisvektor hinzu. Die Funktion sollte den Vektor zurückgeben, der alle übereinstimmenden Schlüssel enthält.
Probier es selbst
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
// TODO: Schreiben Sie hier Ihre findKeysWithValue-Funktion
int main() {
// Anzahl der Schlüssel-Wert-Paare einlesen
int n;
cin >> n;
// Map zum Speichern der Schlüssel-Wert-Paare erstellen
map<string, int> keyValueMap;
// n Schlüssel-Wert-Paare einlesen
for (int i = 0; i < n; i++) {
string key;
int value;
cin >> key >> value;
keyValueMap[key] = value;
}
// Zielwert einlesen, nach dem gesucht werden soll
int targetValue;
cin >> targetValue;
// TODO: Rufen Sie Ihre findKeysWithValue-Funktion auf und speichern Sie das Ergebnis
// TODO: Geben Sie die Ergebnisse im erforderlichen Format aus
// Zuerst "Keys found: [Anzahl]" ausgeben
// Dann jeden passenden Schlüssel in einer separaten Zeile ausgeben
return 0;
}Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügen