Bibliothèque d'algorithmes C ++ - fonction lower_bound ()

La description

La fonction C ++ std::algorithm::lower_bound()trouve le premier élément au moins égal à la valeur donnée. Cette fonction exclut l'élément dans l'ordre trié. Il utilise une fonction binaire pour la comparaison.

Déclaration

Voici la déclaration de la fonction std :: algorithm :: lower_bound () sous forme d'en-tête std :: algorithme.

C ++ 98

template <class ForwardIterator, class T, class Compare>
ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,
   const T& val, Compare comp);

Paramètres

  • first - Transférer l'itérateur à la position initiale.

  • last - Transférer l'itérateur vers la position finale.

  • val - Valeur de la borne inférieure à rechercher dans la plage.

  • comp - Une fonction binaire qui accepte deux arguments et renvoie bool.

Valeur de retour

Renvoie un itérateur vers le premier élément au moins égal à la valeur donnée. Si tous les éléments de la plage comparent moins de val , la fonction retourne en dernier .

Des exceptions

Lève une exception si la fonction binaire ou une opération sur un itérateur lève une exception.

Veuillez noter que des paramètres non valides provoquent un comportement non défini.

Complexité temporelle

Linéaire.

Exemple

L'exemple suivant montre l'utilisation de la fonction std :: algorithm :: lower_bound ().

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

bool ignore_case(char a, char b) {
   return(tolower(a) == tolower(b));
}

int main(void) {
   vector<char> v = {'A', 'b', 'C', 'd', 'E'};
   auto it = lower_bound(v.begin(), v.end(), 'C');

   cout << "First element which is greater than \'C\' is " << *it << endl;

   it = lower_bound(v.begin(), v.end(), 'C', ignore_case);

   cout << "First element which is greater than \'C\' is " << *it << endl;

   it = lower_bound(v.begin(), v.end(), 'z', ignore_case);

   cout << "All elements are less than \'z\'." << endl;

   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

First element which is greater than 'C' is b
First element which is greater than 'C' is d
All elements are less than 'z'.