Verifique se existe uma chave em um mapa em C++

Jinku Hu 12 outubro 2023
  1. Use a função std::map::find para verificar se a chave existe em um mapa C++
  2. Use a função std::map::count para verificar se a chave existe em um mapa C++
  3. Use a função std::map::contains para verificar se a chave existe em um mapa C++
Verifique se existe uma chave em um mapa em C++

Este artigo apresentará como verificar se existe uma chave em um mapa em C++.

Use a função std::map::find para verificar se a chave existe em um mapa C++

O contêiner std::map é uma estrutura de dados associativa de pares chave-valor armazenados classificados, e cada elemento possui uma chave única. Por outro lado, STL também fornece uma versão não classificada do mesmo contêiner denominado std::unordered_map. Ambos os contêineres oferecem suporte aos principais métodos de pesquisa descritos a seguir.

find é uma das funções embutidas do contêiner std::map que leva um único argumento do valor de chave correspondente para pesquisar. A função retorna um iterador para o elemento com o valor-chave fornecido, caso contrário, o iterador ultrapassado. No exemplo a seguir, inicializamos o map dos tipos std::pair<string, string> e então pegamos o valor da chave da entrada do usuário passada para a função find. O programa de exemplo produz a string afirmativa para o fluxo 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;
}

Resultado:

j : Julia
l : Lua
m : MATLAB
o : Octave
p : Python
s : Scala
Enter the key to search for: l
Key Exists!

Use a função std::map::count para verificar se a chave existe em um mapa C++

Alternativamente, pode-se utilizar a função integrada count do contêiner std::map para verificar se uma determinada chave existe em um objeto de mapa. Observe que a função count recupera o número de elementos que possuem o valor de chave fornecido. Se nenhum elemento for encontrado com a chave 0, o valor será retornado. Assim, podemos usar a chamada de função count como uma condição if para produzir a string de afirmação quando a chave fornecida existe em um objeto de mapa.

#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;
}

Resultado:

Enter the key to search for: l
Key Exists!

Use a função std::map::contains para verificar se a chave existe em um mapa C++

contains é outra função embutida que pode ser usada para descobrir se a chave existe em um map. Esta função retorna um valor booleano se o elemento com a chave fornecida existe no objeto. Observe que todas as três funções listadas neste artigo têm complexidade 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;
}

Resultado:

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

Artigo relacionado - C++ Map