Controlla se una chiave esiste in una mappa in C++

Jinku Hu 12 ottobre 2023
  1. Usa la funzione std::map::find per verificare se la chiave esiste in una mappa C++
  2. Usa la funzione std::map::count per verificare se la chiave esiste in una mappa C++
  3. Usa la funzione std::map::contains per verificare se la chiave esiste in una mappa C++
Controlla se una chiave esiste in una mappa in 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!
Autore: 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

Articolo correlato - C++ Map