namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:bsearch

bsearch()

#include <cstdlib>

void * bsearch (const void *key, const void *array, size_t count, size_t size,
                int (*compare)(const void*, const void*)) 

Binäre Suche.

Parameter

key gesuchter Wert
array Feldanfang
count Anzahl der Feldelemente
size Größe eines Feldelementes in Byte
compare Vergleichsfunktion

Die Vergleichsfunktion compare(x,y) muss zwei Zeiger auf Feldelemente übernehmen und eine Ganzzahl liefern:

compare(x,y) < 0 *x < *y
compare(x,y) ==0 für *x ==*y
compare(x,y) > 0 *x > *y

Wegen der strengeren Typprüfung sind in C++ Typecasts erforderlich.

Ergebnis

Rückgabewert: Zeiger auf ein Feldelement mit dem gesuchten Wert key, sonst NULL.

Siehe auch

Beispiel

bsearch.cpp
#include <cstdlib>
#include <iostream>
 
int vergleich(const double* x, const double* y)
{
  return *x - *y;
}
 
int main()
{
  double arr[] = { 1, 2, 3, 4, 5 };
  double gesucht = 2;
  double *ptr;
  ptr = (double*) std::bsearch(&gesucht, arr, 5, sizeof(double), 
                               (int (*)(const void*, const void*)) vergleich);
  if (ptr)
  {
    std::cout << *ptr << '\n';
  }
  else
  {
    std::cout << "nicht gefunden\n";
  }
}
kennen/lib/bsearch.txt · Zuletzt geändert: 2019-11-20 15:04 von rrichter