función std :: LOWER_BOUND () con ejemplo en STL C ++

En este artículo, vamos a aprender sobre el uso del límite distinto función de biblioteca () y cómo usar eso?

std :: LOWER_BOUND ()

std :: LOWER_BOUND () es una función de biblioteca STL, que viene bajo la biblioteca cabecera algoritmo y encuentra el límite inferior del elemento de búsqueda en un intervalo . Inferior significa encuadernados el elemento menos en el intervalo que es mayor o igual que el elemento de búsqueda.

Say el rango es: [4, 5, 6, 9, 12] y el elemento de búsqueda es 6, entonces el límite inferior es 6 en sí. Si el elemento de búsqueda es 7, entonces el límite inferior sería 9

iPhone:

  1. Cuando existe un elemento de búsqueda:
    std :: límite distinto () vuelve iterador para el propio elemento
  2. cuando el elemento de búsqueda no existe:

    1. Si todos los elementos son mayores que el elemento de búsqueda:
      límite distinto () devuelve un iterador para comenzar de la gama.
    2. Si todos los elementos son más bajos que el elemento de búsqueda:
      LOWER_BOUND () devuelve un iterador a extremo de la gama (No límite inferior existe).
    3. De lo contrario,
      límite distinto () un iterador al siguiente elemento mayor al elemento de búsqueda (El mayor elemento más próximo que el elemento de búsqueda) de la gama

Para utilizar el límite distinto () el rango tiene que ser resuelto.

Sintaxis:

ForwardIterator lower_bound(
ForwardIterator first,
ForwardIterator last,
const T& searching_element
);

Parámetro (s):

  • ForwardIterator primera : iterador para el inicio del rango
  • ForwardIterator última : iterador hasta el final de el rango
  • class T & amp; searching_element : T es el tipo de datos y searching_element es el elemento que límite inferior se encuentran

class Tipo: El tipo class es un iterador a los encontrados límite inferior de la gama.

C ++ Implementación:

#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> arr{ 6, 5, 9, 12, 4 };
//sort before using lower_bound()
sort(arr.begin(), arr.end());
int searching_element = 6;
vector<int>::iterator it;
it = lower_bound(arr.begin(), arr.end(), searching_element);
//if all eleemnts are smaller than the searching
//element then no lower bound exists
if (it == arr.end()) {
cout << "No lower bound existsn";
}
else
cout << "Lower bound of " << searching_element << ": " << *it << endl;
searching_element = 7;
it = lower_bound(arr.begin(), arr.end(), searching_element);
//if all eleemnts are smaller than the searching
//element then no lower bound exists
if (it == arr.end()) {
cout << "No lower bound existsn";
}
else
cout << "Lower bound of " << searching_element << ": " << *it << endl;
return 0;
}

de salida:

Lower bound of 6: 6
Lower bound of 7: 9

En lo anterior LOWER_BOUND () función, para comparar entre elementos class operador comparador ‘& lt;’ se utiliza.

Pero tenemos una función versión extendida que utiliza un comparador definida por el usuario para comparar b / w elementos.

ForwardIterator lower_bound(
ForwardIterator first,
ForwardIterator last,
const T& searching_element,
Comparator comp);

Parámetro (s):

  • ForwardIterator primera : iterador para el inicio del rango
  • ForwardIterator última : iterador hasta el final de la gama
  • class T & amp ; searching_element : T es el tipo de datos y searching_element es el elemento que límite inferior se encuentra
  • Comparador los : definida por el usuario comparador

const tipo: El tipo class es un iterador a los encontrados límite inferior de la gama.

Esto puede ser útil si usted tiene los tipos de datos definidos por el usuario.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *