Compruebe si existe una clave en un mapa en C++
-
Utilice la función
std::map::find
para comprobar si la clave existe en un mapa de C++ -
Utilice la función
std::map::count
para comprobar si la clave existe en un mapa de C++ -
Utilice la función
std::map::contains
para comprobar si la clave existe en un mapa de C++
Este artículo presentará cómo comprobar si existe una clave en un mapa en C++.
Utilice la función std::map::find
para comprobar si la clave existe en un mapa de C++
El contenedor std::map
es una estructura de datos asociativa de pares clave-valor almacenados ordenados, y cada elemento tiene una clave única. Por otro lado, STL también proporciona una versión sin clasificar del mismo contenedor llamado std::unordered_map
. Ambos contenedores admiten los métodos de búsqueda clave que se describen a continuación.
find
es una de las funciones integradas del contenedor std::map
que toma un solo argumento del valor de clave correspondiente para buscar. La función devuelve un iterador al elemento con el valor clave dado; de lo contrario, el iterador pasado al final. En el siguiente ejemplo, inicializamos el map
de tipo std::pair<string, string>
y luego tomamos el valor de la clave de la entrada del usuario pasada a la función find
. El programa de ejemplo envía la cadena afirmativa a la secuencia 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;
}
Producción :
j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!
Utilice la función std::map::count
para comprobar si la clave existe en un mapa de C++
Alternativamente, se puede utilizar la función incorporada count
del contenedor std::map
para verificar si una clave determinada existe en un objeto map. Tenga en cuenta que la función count
recupera el número de elementos que tienen el valor de clave dado. Si no se encuentra ningún elemento con la clave 0
se devuelve el valor. Por lo tanto, podemos usar la llamada a la función count
como una condición if
para generar la cadena de afirmación cuando la clave dada existe en un objeto map.
#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;
}
Producción :
Enter the key to search for: l
Key Exists!
Utilice la función std::map::contains
para comprobar si la clave existe en un mapa de C++
contains
es otra función incorporada que se puede usar para encontrar si la clave existe en un map
. Esta función devuelve un valor booleano si el elemento con la clave dada existe en el objeto. Tenga en cuenta que las tres funciones enumeradas en este artículo tienen complejidad logarítmica.
#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;
}
Producción :
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