Verwendung von die std::map::find-Funktion in C++
-
Verwenden Sie die Funktion
std::map::find
, um das Element mit einem bestimmten Schlüsselwert in C++ zu finden -
Verwenden Sie die Member-Funktion
contains
, um zu überprüfen, ob das angegebene Element in einer Map in C++ vorhanden ist
Dieser Artikel erklärt, wie Sie die Funktion std::map::find
und einige ihrer Alternativen in C++ verwenden.
Verwenden Sie die Funktion std::map::find
, um das Element mit einem bestimmten Schlüsselwert in C++ zu finden
Das Objekt std::map
ist einer der assoziativen Container in der Standard-Template-Bibliothek von C++ und implementiert eine sortierte Datenstruktur, in der Schlüsselwerte gespeichert werden. Beachten Sie, dass Schlüssel im Container std::map
eindeutig sind. Wenn also mit den vorhandenen Schlüsseln neue Elemente eingefügt werden, hat die Operation keine Auswirkung. Dennoch können einige spezielle Memberfunktionen in der Klasse std::map
den bestehenden Paaren neue Werte zuweisen, wenn die Schlüssel übereinstimmen (z. B. Funktion insert_or_assign
).
Zu den Vorteilen des Containers std::map
gehören schnelle Such-, Einfüge- und Entfernungsoperationen, die in logarithmischer Zeit durchgeführt werden können. Die Suchoperation wird vom Member find
bereitgestellt, der eine Referenz auf einen Schlüssel akzeptiert. Wird der angegebene Schlüssel im std::map
-Objekt gefunden, wird der Iterator zum entsprechenden Element zurückgegeben. Angenommen, der angegebene Schlüssel wird im Container nicht gefunden, wird der Iterator nach dem Ende (map::end()
) zurückgegeben.
Der folgende Codeausschnitt demonstriert ein einfaches Anwendungsszenario, bei dem ein map
-Container von string
-Paaren mit beliebigen Werten initialisiert und dann der Schlüssel mit dem Wert "h"
gesucht wird. Folglich verarbeiten wir den zurückgegebenen Iterator mit der Anweisung if-else
, um entweder das Elementpaar zu drucken oder eine Meldung auszugeben, dass der angegebene Schlüssel nicht gefunden wurde.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
auto item = m1.find(key);
if (item != m1.end()) {
cout << "Key exists! - {" << item->first << ";" << item->second << "}\n";
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
Key exists! - {h;htop}
Verwenden Sie die Member-Funktion contains
, um zu überprüfen, ob das angegebene Element in einer Map in C++ vorhanden ist
Wenn der Benutzer bestätigen muss, ob das Paar mit dem angegebenen Wert im Objekt map
existiert, kann man die Member-Funktion contains
verwenden. Die Funktion ist seit der C++20-Version Teil des std::map
-Containers, daher sollten Sie die Compiler-Version kennen, um den folgenden Codeausschnitt auszuführen. Die Funktion contains
nimmt eine Referenz auf den Schlüssel und gibt den bool
-Wert true
zurück, wenn er gefunden wird. Die Zeitkomplexität dieser Memberfunktion ist ebenfalls logarithmisch.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
if (m1.contains(key)) {
cout << "Key Exists!" << endl;
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
Key Exists!
Alternativ kann man mit der Member-Funktion cout
prüfen, ob das Elementpaar mit dem angegebenen Schlüssel in der map
existiert. Im Allgemeinen wird die Funktion cout
verwendet, um die Anzahl der Elemente mit dem angegebenen Schlüssel abzurufen, aber da die std::map
nur eindeutige Schlüsselwerte speichert, gibt der Prozess 1
zurück, wenn das Element gefunden wird. Andernfalls wird ein Nullwert zurückgegeben, um anzuzeigen, dass kein Element gefunden wurde.
#include <iostream>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::map;
using std::string;
int main() {
std::map<string, string> m1 = {
{"h", "htop"}, {"k", "ktop"}, {"t", "ttop"},
{"r", "rtop"}, {"w", "wtop"}, {"p", "ptop"},
};
string key = "h";
if (m1.count(key)) {
cout << "Key Exists!" << endl;
} else {
cout << "Key does not exist!" << endl;
}
return EXIT_SUCCESS;
}
Ausgabe:
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