Controlla se l'elemento esiste in C++ Vector

Jinku Hu 12 ottobre 2023
  1. Algoritmo C++ std::find() per verificare se l’elemento esiste nel vettore
  2. C++ bucle basato su intervallo for per verificare se l’elemento esiste nel vettore
  3. Algoritmo C++ any_of() per verificare se l’elemento esiste nel vettore
Controlla se l'elemento esiste in C++ Vector

Questo articolo mostra più metodi su come controllare se un elemento esiste in un vettore C++.

Algoritmo C++ std::find() per verificare se l’elemento esiste nel vettore

Il metodo find fa parte della libreria degli algoritmi STL; può controllare se l’elemento dato esiste in un particolare intervallo. La funzione ricerca un fattore uguale al terzo parametro passato dall’utente. Il valore restituito corrispondente è l’iteratore del primo elemento trovato o, nel caso in cui non ne venga trovato nessuno, viene restituita la fine dell’intervallo.

Si noti che utilizziamo l’operatore * per accedere al valore della stringa restituito e creare una condizione di confronto nell’istruzione if, come mostrato nell’esempio seguente.

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::find;
using std::string;
using std::vector;

int main() {
  string element_to_check1 = "nibble";
  string element_to_check2 = "nimble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  if (*find(data_types.begin(), data_types.end(), element_to_check1) ==
      element_to_check1) {
    printf("%s is present in the vector\n", element_to_check1.c_str());
  } else {
    printf("%s is not present in the vector\n", element_to_check1.c_str());
  }

  if (*find(data_types.begin(), data_types.end(), element_to_check2) ==
      element_to_check2) {
    printf("%s is present in the vector\n", element_to_check2.c_str());
  } else {
    printf("%s is not present in the vector\n", element_to_check2.c_str());
  }

  return EXIT_SUCCESS;
}

Produzione:

nibble is present in the vector
nimble is not present in the vector

C++ bucle basato su intervallo for per verificare se l’elemento esiste nel vettore

Un cicli for basato su intervalli può essere usato come un’altra soluzione per verificare se un dato elemento è presente nel vettore. Questo metodo è relativamente semplice perché itera attraverso il vettore; ogni iterazione verifica l’uguaglianza con una data stringa. Se un elemento corrisponde, viene stampata una stringa di conferma e il bucle si interrompe utilizzando l’istruzione break.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  string element_to_check = "nibble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  for (const auto &item : data_types) {
    if (item == element_to_check) {
      printf("%s is present in the vector\n", element_to_check.c_str());
      break;
    }
  }
  return EXIT_SUCCESS;
}

Produzione:

nibble is present in the vector

Algoritmo C++ any_of() per verificare se l’elemento esiste nel vettore

Un altro metodo utile dell’intestazione <algorithm>, che è simile al metodo find, è l’algoritmo any_of. Il metodo any_of controlla se il predicato unario, che è specificato come terzo argomento, restituisce true per almeno un elemento in un dato intervallo. In questo esempio, usiamo un’espressione lambda per costruire un predicato unario per confrontare gli elementi del vettore.

#include <algorithm>
#include <iostream>
#include <vector>

using std::any_of;
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  string element_to_check = "nibble";

  vector<string> data_types = {"bit",    "nibble",     "byte",      "char",
                               "int",    "long",       "long long", "float",
                               "double", "long double"};

  if (any_of(data_types.begin(), data_types.end(),
             [&](const string& elem) { return elem == element_to_check; })) {
    printf("%s is present in the vector\n", element_to_check.c_str());
  }

  return EXIT_SUCCESS;
}

Produzione:

nibble is present in the vector
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++ Vector