Menu
Coddy logo textTech

Map-Wertsuche

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 55 von 56.

challenge icon

Aufgabe

Einfach

Erstellen 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 n Paare von Eingaben, jeweils bestehend aus:
    • Einem String key, der den Schlüssel darstellt
    • Einer Ganzzahl value, die den Wert darstellt
  • Einer Ganzzahl targetValue, die den zu suchenden Wert darstellt

Ihr Programm sollte:

  1. Eine Funktion namens findKeysWithValue erstellen, die eine std::map<std::string, int> und eine Ganzzahl als Parameter entgegennimmt
  2. Die Funktion sollte einen std::vector<std::string> zurückgeben, der alle Schlüssel enthält, die den angegebenen Wert haben
  3. In der Hauptfunktion eine Map erstellen und sie mit den eingegebenen Schlüssel-Wert-Paaren füllen
  4. Die Funktion findKeysWithValue mit der Map und dem Zielwert aufrufen
  5. 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: 0

Denken 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