Prüfen, ob ein Schlüssel in einer Map in C++ vorhanden ist
-
Verwenden der Funktion
std::map::find
zum zu überprüfen, ob ein Schlüssel in einer C++-Map vorhanden ist -
Verwenden der Funktion
std::map::count
, um zu prüfen, ob der Schlüssel in einer C++-Map vorhanden ist -
Verwenden der Funktion
std::map::contains
, um zu überprüfen, ob ein Schlüssel in einer C++-Map 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!
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