Prüfen, ob ein Schlüssel in einer Map in C++ vorhanden ist

Jinku Hu 12 Oktober 2023
  1. Verwenden der Funktion std::map::find zum zu überprüfen, ob ein Schlüssel in einer C++-Map vorhanden ist
  2. Verwenden der Funktion std::map::count, um zu prüfen, ob der Schlüssel in einer C++-Map vorhanden ist
  3. Verwenden der Funktion std::map::contains, um zu überprüfen, ob ein Schlüssel in einer C++-Map vorhanden ist
Prüfen, ob ein Schlüssel in einer Map in C++ vorhanden ist

In diesem Artikel wird erläutert, wie Sie überprüfen können, ob ein Schlüssel in einer Zuordnung in C++ vorhanden ist.

Verwenden der Funktion std::map::find zum zu überprüfen, ob ein Schlüssel in einer C++-Map vorhanden ist

Der Container std::map ist eine assoziative Datenstruktur von sortiert gespeicherten Schlüssel-Wert-Paaren, wobei jedes Element einen eindeutigen Schlüssel hat. Andererseits bietet STL auch eine unsortierte Version desselben Containers namens std::unordered_map. Beide Container unterstützen die unten beschriebenen Schlüsselsuchmethoden.

find ist eine der eingebauten Funktionen des std::map-Containers, die ein einzelnes Argument des entsprechenden Schlüsselwerts für die Suche benötigt. Die Funktion gibt einen Iterator an das Element mit dem angegebenen Schlüsselwert zurück, andernfalls den Iterator nach dem Ende. Im folgenden Beispiel initialisieren wir die map von std::pair<string, string>-Typen und nehmen dann den Schlüsselwert aus der Benutzereingabe, die an die find-Funktion übergeben wird. Das Beispielprogramm gibt die bestätigende Zeichenkette an den Strom cout aus.

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  for (const auto& [key, value] : lang_map) {
    cout << key << " : " << value << endl;
  }

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.find(key_to_find) != lang_map.end()) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!

Verwenden der Funktion std::map::count, um zu prüfen, ob der Schlüssel in einer C++-Map vorhanden ist

Alternativ kann man die eingebaute Funktion count des Containers std::map verwenden, um zu überprüfen, ob ein bestimmter Schlüssel in einem Kartenobjekt vorhanden ist. Beachten Sie, dass die Funktion count die Anzahl der Elemente abruft, die den angegebenen Schlüsselwert haben. Wenn kein Element mit dem Schlüssel gefunden wird, wird der Wert 0 zurückgegeben. So können wir den Funktionsaufruf count als if-Bedingung verwenden, um den bestätigenden String auszugeben, wenn der angegebene Schlüssel in einem Map-Objekt vorhanden ist.

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.count(key_to_find)) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

Enter the key to search for: l
Key Exists!

Verwenden der Funktion std::map::contains, um zu überprüfen, ob ein Schlüssel in einer C++-Map vorhanden ist

contains ist eine weitere eingebaute Funktion, die verwendet werden kann, um herauszufinden, ob der Schlüssel in einer map existiert. Diese Funktion gibt einen booleschen Wert zurück, wenn das Element mit dem angegebenen Schlüssel im Objekt vorhanden ist. Beachten Sie, dass alle drei in diesem Artikel aufgeführten Funktionen eine logarithmische Komplexität aufweisen.

#include <iostream>
#include <map>

using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;

int main() {
  string key_to_find;
  std::map<string, string> lang_map = {{
                                           "j",
                                           "Julia",
                                       },
                                       {
                                           "p",
                                           "Python",
                                       },
                                       {
                                           "m",
                                           "MATLAB",
                                       },
                                       {
                                           "o",
                                           "Octave",
                                       },
                                       {
                                           "s",
                                           "Scala",
                                       },
                                       {
                                           "l",
                                           "Lua",
                                       }};

  cout << "Enter the key to search for: ";
  cin >> key_to_find;

  if (lang_map.contains(key_to_find)) {
    cout << "Key Exists!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

Enter the key to search for: l
Key Exists!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ Map