Compruebe si existe una clave en un mapa en C++

Jinku Hu 12 octubre 2023
  1. Utilice la función std::map::find para comprobar si la clave existe en un mapa de C++
  2. Utilice la función std::map::count para comprobar si la clave existe en un mapa de C++
  3. Utilice la función std::map::contains para comprobar si la clave existe en un mapa de C++
Compruebe si existe una clave en un mapa en 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!
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

Artículo relacionado - C++ Map