Controlla se una chiave esiste in una mappa in C++
-
Usa la funzione
std::map::find
per verificare se la chiave esiste in una mappa C++ -
Usa la funzione
std::map::count
per verificare se la chiave esiste in una mappa C++ -
Usa la funzione
std::map::contains
per verificare se la chiave esiste in una mappa C++
Questo articolo introdurrà come verificare se esiste una chiave in una mappa in C++.
Usa la funzione std::map::find
per verificare se la chiave esiste in una mappa C++
Il contenitore std::map
è una struttura dati associativa di coppie chiave-valore archiviate ordinate e ogni elemento ha una chiave univoca. D’altra parte, STL fornisce anche una versione non ordinata dello stesso contenitore denominata std::unordered_map
. Entrambi questi contenitori supportano i metodi di ricerca chiave descritti di seguito.
find
è una delle funzioni integrate del contenitore std::map
che accetta un singolo argomento del valore chiave corrispondente da cercare. La funzione restituisce un iteratore all’elemento con il valore-chiave dato, altrimenti, l’iteratore passato alla fine. Nell’esempio seguente, inizializziamo la map
dei tipi std::pair<string, string>
e quindi prendiamo il valore della chiave dall’input dell’utente passato alla funzione find
. Il programma di esempio restituisce la stringa affermativa al flusso cout
.
#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;
}
Produzione:
j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!
Usa la funzione std::map::count
per verificare se la chiave esiste in una mappa C++
In alternativa, è possibile utilizzare la funzione integrata count
del contenitore std::map
per verificare se una determinata chiave esiste in un oggetto mappa. Nota che, la funzione count
recupera il numero di elementi che hanno il valore chiave dato. Se non viene trovato alcun elemento con la chiave 0
viene restituito il valore. Quindi, possiamo usare la chiamata alla funzione count
come condizione if
per produrre la stringa affermativa quando la chiave data esiste in un oggetto mappa.
#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;
}
Produzione:
Enter the key to search for: l
Key Exists!
Usa la funzione std::map::contains
per verificare se la chiave esiste in una mappa C++
contains
è un’altra funzione incorporata che può essere utilizzata per trovare se la chiave esiste in una map
. Questa funzione restituisce un valore booleano se l’elemento con la chiave data esiste nell’oggetto. Notare che tutte e tre le funzioni elencate in questo articolo hanno complessità logaritmica.
#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;
}
Produzione:
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