Überprüfen Sie, ob ein Array ein Element in C++ enthält
- Verwenden Sie eine Schleife, um zu prüfen, ob ein Array ein Element in C++ enthält
-
Verwenden Sie
Std::Find
, um zu prüfen, ob ein Array ein Element in C++ enthält -
Verwenden Sie
Std::Count
, um zu prüfen, ob ein Array ein Element in C++ enthält -
Verwenden Sie
std::binary_search
, um zu prüfen, ob ein Array ein Element in C++ enthält -
Verwenden Sie die Funktion
any_of()
, um zu prüfen, ob ein Array ein Element in C++ enthält - Fazit
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:
- die Variable
points
, die als Iterator für die Anfangsposition des Arrays fungiert - den Ausdruck
points+x
, der als Iterator für die letzte Position des Arrays fungiert - 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.