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.