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 el operador < 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>
pair<ForwardIterator,ForwardIterator>
equal_range (ForwardIterator first, ForwardIterator last, const T& val);
Parámetros
first - Reenviar iterador a la posición inicial.
last - Reenviar iterador a la posición final.
val - valor para comparar los elementos.
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;
int main(void) {
vector<int> v = {1, 2, 2, 2, 2};
int cnt = 0;
auto range = equal_range(v.begin(), v.end(), 2);
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 4 times.