Biblioteca de algoritmos de C ++ - función equal_range ()

Descripción

La función C ++ std::algorithm::equal_range()devuelve un rango de elementos que coincide con una clave específica. Utiliza la función de comparación binaria para comparar. El elemento del rango debe estar ordenado.

Declaración

A continuación se muestra la declaración de la función std :: algorítm :: equal_range () del encabezado std :: algorítmico.

C ++ 98

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

Parámetros

  • first - Reenviar iterador a la posición inicial.

  • last - Reenviar iterador a la posición final.

  • val - Valor para comparar los elementos.

  • comp - Una función binaria que acepta dos argumentos y devuelve un bool.

Valor devuelto

Devuelve un subrango si se encuentra el elemento. Si val no es equivalente a ningún valor en el rango, el subrango devuelto tiene una longitud de cero, con ambos iteradores apuntando al valor más cercano mayor que val , si lo hay, o al último, si val compara mayor que todos los elementos en el rango.

Excepciones

Lanza una excepción si la comparación de elementos o una operación en un iterador arroja una excepción.

Tenga en cuenta que los parámetros no válidos provocan un comportamiento indefinido.

Complejidad del tiempo

Aproximadamente 2 * log2 (n) +1 elemento.

Ejemplo

El siguiente ejemplo muestra el uso de la función std :: algorítm :: equal_range ().

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

using namespace std;

bool binary_pred(int a, int b) {
   return (a > b);
}

int main(void) {
   vector<int> v = {2, 2, 2, 1, 1};
   int cnt = 0;

   auto range = equal_range(v.begin(), v.end(), 2, binary_pred);

   for (auto it = range.first; it != range.second; ++it)
      ++cnt;

   cout << "Element 2 occurs " << cnt << " times." << endl;

   return 0;
}

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Element 2 occurs 3 times.