Prüfen ob Element in C++-Vektor vorhanden ist

Jinku Hu 12 Oktober 2023
  1. C++ std::find() Algorithmus zur Prüfung, ob ein Element in einem Vektor vorhanden ist
  2. C++ Bereichsbasierte for-Schleife zur Prüfung, ob Element im Vektor vorhanden ist
  3. C++ any_of() Algorithmus zur Prüfung, ob ein Element im Vektor vorhanden ist
Prüfen ob Element in C++-Vektor vorhanden ist

Dieser Artikel demonstriert mehrere Methoden, wie Sie überprüfen können, ob ein Element in einem C++-Vektor vorhanden ist.

C++ std::find() Algorithmus zur Prüfung, ob ein Element in einem Vektor vorhanden ist

Die find-Methode ist ein Teil der STL-Algorithmus-Bibliothek; sie kann prüfen, ob das gegebene Element in einem bestimmten Bereich existiert. Die Funktion sucht nach einem Faktor, der gleich dem dritten vom Benutzer übergebenen Parameter ist. Der entsprechende Rückgabewert ist der Iterator zum ersten gefundenen Element, oder, falls keiner gefunden wird, wird das end des Bereichs zurückgegeben.

Beachten Sie, dass wir den *-Operator verwenden, um auf den zurückgegebenen Zeichenkettenwert zuzugreifen und eine Vergleichsbedingung in der if-Anweisung vorzunehmen, wie im folgenden Beispiel gezeigt wird.

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

Ausgabe:

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

C++ Bereichsbasierte for-Schleife zur Prüfung, ob Element im Vektor vorhanden ist

Eine bereichsbasierte for-Schleife kann als weitere Lösung verwendet werden, um zu prüfen, ob ein bestimmtes Element im Vektor vorhanden ist. Diese Methode ist relativ einfach, weil sie durch den Vektor iteriert; jede Iteration prüft auf Gleichheit mit einer gegebenen Zeichenkette. Wenn ein Element übereinstimmt, wird eine Bestätigungszeichenkette ausgegeben, und die Schleife wird mit der Break-Anweisung beendet.

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

Ausgabe:

nibble is present in the vector

C++ any_of() Algorithmus zur Prüfung, ob ein Element im Vektor vorhanden ist

Eine weitere nützliche Methode aus dem <algorithm> Header, die der find Methode ähnlich ist, ist der any_of Algorithmus. Die any_of-Methode prüft, ob das unäre Prädikat, das als drittes Argument angegeben wird, für mindestens ein Element in einem gegebenen Bereich true zurückgibt. In diesem Beispiel verwenden wir einen Lambda-Ausdruck, um ein unäres Prädikat für den Vergleich von Vektorelementen zu konstruieren.

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

Ausgabe:

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

Verwandter Artikel - C++ Vector