Überprüfen Sie, ob ein Array ein Element in C++ enthält

Shikha Chaudhary 12 Oktober 2023
  1. Verwenden Sie eine Schleife, um zu prüfen, ob ein Array ein Element in C++ enthält
  2. Verwenden Sie Std::Find, um zu prüfen, ob ein Array ein Element in C++ enthält
  3. Verwenden Sie Std::Count, um zu prüfen, ob ein Array ein Element in C++ enthält
  4. Verwenden Sie std::binary_search, um zu prüfen, ob ein Array ein Element in C++ enthält
  5. Verwenden Sie die Funktion any_of(), um zu prüfen, ob ein Array ein Element in C++ enthält
  6. Fazit
Überprüfen Sie, ob ein Array ein Element in C++ enthält

Während man in C++ mit Arrays arbeitet, muss man vielleicht auch prüfen, ob ein Array in C++ ein Element enthält. Obwohl dies einfach mit einer Schleife erfolgen kann, können andere effiziente Methoden dasselbe tun.

Dieser Artikel führt Sie durch die verschiedenen Möglichkeiten, um zu überprüfen, ob ein Element in einem Array in C++ vorhanden ist. Weiter lesen.

Die Standardbibliothek von C++ stellt einige Algorithmen und Funktionen bereit, mit denen wir überprüfen können, ob ein Array ein Element in C++ enthält. Aber lassen Sie uns zuerst sehen, wie wir eine Schleife verwenden können, um dies zu tun.

Verwenden Sie eine Schleife, um zu prüfen, ob ein Array ein Element in C++ enthält

Sie können eine for-Schleife verwenden, um die Dinge sehr einfach zu halten. Hier im Code unten haben wir ein Array namens points und ein Element namens key, nach dem wir suchen müssen.

Innerhalb des main-Blocks verwenden wir eine for-Schleife, um alle Elemente linear zu durchlaufen. Bei jeder Iteration prüfen wir, ob das aktuelle Element mit dem gesuchten Element identisch ist.

Wenn das key-Element gefunden wird, bricht die Schleife und der Wert der booleschen Variablen present wird auf false aktualisiert. Später drucken wir basierend auf dem Wert dieser Variablen, present, die gewünschte Ausgabe.

Beispielcode:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = false;
  for (int i : points) {
    if (i == key) {
      present = true;
      break;
    }
  }
  if (present) {
    cout << "The element is present";
  } else {
    cout << "The elment is not present";
    return 0;
  }

Ausgabe:

The element is present

Obwohl dies der einfachste Weg ist, nach einem Element in einem Array zu suchen, gibt es andere bessere Möglichkeiten, dasselbe zu tun. Wir werden sie in den folgenden Abschnitten diskutieren.

Verwenden Sie Std::Find, um zu prüfen, ob ein Array ein Element in C++ enthält

Die Funktion std::find dient primär dazu, ein Element in einem bestimmten Bereich zu suchen. Diese Funktion sucht das gewünschte Element zwischen dem Bereich [first, last).

Syntax:

InputIterator find(InputIterator first, InputIterator last, const T& val);

Unten ist der Code, der die Funktion std::find verwendet, um nach einem Element in einem Array zu suchen. Hier verwenden wir eine boolesche Variable, present, und die Funktion std::find, um über das Array points zu iterieren.

Die Funktion std::find nimmt drei Argumente entgegen:

  1. die Variable points, die als Iterator für die Anfangsposition des Arrays fungiert
  2. den Ausdruck points+x, der als Iterator für die letzte Position des Arrays fungiert
  3. und die Variable key, das ist der zu suchende Wert

Wenn kein Wert gefunden wird, gibt diese Funktion den Iterator an das Ende des Arrays zurück, aber wir können die gewünschte Anweisung basierend auf dem Wert der Variablen present drucken.

Beispielcode:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  int x = sizeof(points) / sizeof(*points);

  bool present = std::find(points, points + x, key) != points + x;

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Ausgabe:

The element is present

Wenn die Übergabe der oben genannten Argumente verwirrend ist, können Sie auch zwei Iteratoren an den Anfang und das Ende des Arrays übergeben, indem Sie die Funktionen begin() bzw. end() verwenden.

Beispielcode:

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = std::find(begin(points), end(points), key) != end(points);

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Ausgabe:

The element is present

Sehen Sie, wie wir die Funktionen begin() und end() direkt verwenden können, um den Code zu vereinfachen. Es funktioniert genauso wie die Argumente im vorherigen Code.

Verwenden Sie Std::Count, um zu prüfen, ob ein Array ein Element in C++ enthält

Eine weitere Möglichkeit wäre die Verwendung des Algorithmus std::count. Im Wesentlichen zählt dieser Algorithmus, wie oft ein Element in einem bestimmten Bereich gesehen wird.

Wenn der zurückgegebene Wert der Anzahl nicht Null ist, bedeutet dies, dass das Element im Array vorhanden ist. Der std::count-Algorithmus zählt auch die Vorkommen eines Elements zwischen dem Bereich [first, last).

Syntax:

int counter(Iterator first, Iterator last, T &val)

Sehen Sie sich den Code an, um zu verstehen, wie er funktioniert.

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  cout << std::count(begin(points), end(points), key);
}

Ausgabe:

2

Sehen Sie, wie wir die erforderlichen Argumente an diese Funktion übergeben und das Ergebnis drucken. Da der Schlüssel-Wert 56 an zwei Stellen im Array Punkte vorhanden ist, erhalten wir als Ausgabe 2.

Jetzt werden wir dies mit einer booleschen Variablen, present, zusammenführen, um zu prüfen, ob die Anzahl der key-Variablen größer als Null ist oder nicht. Wenn ja, bedeutet dies einfach, dass das Element im Array vorhanden ist.

#include <algorithm>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present = std::count(begin(points), end(points), key) > 0;

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Ausgabe:

The element is present

Natürlich ist dieser Algorithmus langsamer als std::find, da er das gesamte Array durchläuft, um die Anzahl eines Elements zu finden.

Verwenden Sie std::binary_search, um zu prüfen, ob ein Array ein Element in C++ enthält

Wenn ein Array sortiert ist, können Sie in C++ am effizientesten prüfen, ob ein Array ein Element enthält, indem Sie den binären Suchalgorithmus verwenden. Die Standardbibliothek von C++ bietet einen binary_search-Algorithmus, um dasselbe zu tun.

Der std::binary_search-Algorithmus gibt den Wert true zurück, wenn das Element im Bereich [first, last) gefunden wird. Andernfalls wird false zurückgegeben.

Im folgenden Code haben wir eine Funktion namens checkEle() erstellt, in der wir zuerst das Array mit der Funktion sort() sortieren und dann den Algorithmus std::binary_search verwenden, um nach dem Element key zu suchen.

Beispielcode:

#include <algorithm>
#include <iostream>
using namespace std;

bool checkEle(int a[], int x, int key) {
  if (x <= 0) {
    return false;
  }
  sort(a, a + x);
  return std::binary_search(a, a + x, key);
}

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  int x = sizeof(points) / sizeof(*points);

  bool present = checkEle(points, x, key);

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Ausgabe:

The element is present

Dies ist nur sinnvoll, wenn das Array bereits sortiert ist, da die Verwendung der Funktion sort() zuerst zum Sortieren des Arrays die Zeitkomplexität noch weiter erhöht.

Verwenden Sie die Funktion any_of(), um zu prüfen, ob ein Array ein Element in C++ enthält

Wir können die Funktion any_of() verwenden, um zu prüfen, ob ein Prädikat mit irgendwelchen Elementen übereinstimmt, die in einem bestimmten Bereich vorhanden sind. Wenn ja, wird true zurückgegeben; andernfalls gibt es false zurück.

Syntax:

template <class InputIterator, class UnaryPredicate>
bool any_of(InputIterator begin, InputIterator end, UnaryPredicate p);

Sehen Sie sich den Code an, um zu verstehen, wie das Prädikat definiert ist. Hier verwenden wir neben dem Aufruf der any_of()-Funktion auch die and-Bedingung, die gleichzeitig prüft, ob das aktuelle Element gleich dem gesuchten key ist.

Wenn die Bedingung für ein beliebiges Element erfüllt ist, wird der Wert der booleschen Variablen present auf true aktualisiert.

#include <algorithm>
#include <array>
#include <iostream>
using namespace std;

int main() {
  int points[] = {23, 45, 56, 12, 34, 56};
  int key = 56;

  bool present =
      std::any_of(begin(points), end(points), [&](int i) { return i == key; });

  if (present) {
    cout << "The element is present";
  } else {
    cout << "The element is not present";
  }
  return 0;
}

Ausgabe:

The element is present

So kann die Funktion any_of() nach einem Element in einem Array suchen. Hier geht es darum, wie wir in C++ nach einem Element in einem Array suchen können.

Fazit

In diesem Artikel wurden verschiedene Ansätze zum Überprüfen, ob ein Array ein Element in C++ enthält, beschrieben. Wir haben gesehen, wie dafür in C++ eine einfache for-Schleife verwendet wird und haben auch mit Algorithmen wie std::find, std::count und std::binary_search gearbeitet.

Obwohl alle diese Methoden das gleiche Ziel erreichen. Es liegt ganz bei Ihnen, den besten Ansatz zu wählen, der Ihnen gefällt.

Verwandter Artikel - C++ Array