C++ STL Binäre Suche
C++ stellt uns eine fertige Funktion binary_search()
zur Verfügung, so dass wir die Funktion nicht selbst implementieren müssen. Es ist eine sehr einfach zu verwendende und effizient implementierte Methode und nicht fehleranfällig.
C++ STL binary_search()
Überblick
Syntax
DEFAULT
: template <class ForwardIterator, class T>
bool
binary_search(ForwardIterator first, ForwardIterator last, const T& val);
CUSTOM COMPARISON FUNCTION
: template <class ForwardIterator, class T, class Compare>
bool
binary_search(ForwardIterator first, ForwardIterator last, const T& val,
Compare comp);
Hier kann T
einer der folgenden Werte sein: int
, float
, short
, long
, byte
, char
, double
, und auch ein benutzerdefiniertes Object
.
Es wird geprüft, ob ein Element innerhalb von [first, last)
mit dem Zielelement X
übereinstimmt, wobei der binäre Suchalgorithmus verwendet wird. Standardmäßig wird der less-than-Operator verwendet, um Elemente zu vergleichen, aber wir können auch unsere eigene benutzerdefinierte comp
bereitstellen, wie in der zweiten Vorlage oben beschrieben.
Parameter
first |
Ein Vorwärts-Iterator, der auf das erste Element im angegebenen Array-Bereich zeigt. |
last |
Ein Vorwärts-Iterator, der auf das letzte Element im angegebenen Array-Bereich zeigt. |
comp |
Eine benutzerdefinierte binäre Prädikatsfunktion, die zwei Vorwärts-Iteratoren als Argumente akzeptiert und true zurückgibt, wenn die beiden Argumente in der richtigen Reihenfolge vorhanden sind. Sie verändert keine Argumente und folgt der strengen schwachen Reihenfolge, um die Elemente zu ordnen. |
val |
Das Zielelement, das wir innerhalb des angegebenen Array-Bereichs suchen. |
Zurück
Wenn das Zielelement gefunden wird, wird true zurückgegeben; andernfalls wird false zurückgegeben.
C++ Programm für binäre Suche
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5, 6};
if (binary_search(v.begin(), v.end(), 5)) {
cout << "Element found" << endl;
} else {
cout << "Element not found" << endl;
}
return 0;
}
Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.
LinkedIn