Biblioteca de algoritmos C ++ - função equal_range ()
Descrição
A função C ++ std::algorithm::equal_range()retorna um intervalo de elemento que corresponde a uma chave específica. Ele usa a função de comparação binária para comparação. O elemento do intervalo deve estar em ordem de classificação.
Declaração
A seguir está a declaração do cabeçalho da função std :: algorithm :: equal_range () std :: algorithm.
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 - Encaminhe o iterador para a posição inicial.
last - Encaminhe o iterador para a posição final.
val - Valor para comparar os elementos.
comp - Uma função binária que aceita dois argumentos e retorna um bool.
Valor de retorno
Retorna um subintervalo se o elemento for encontrado. Se val não for equivalente a nenhum valor no intervalo, o subintervalo retornado terá um comprimento de zero, com ambos os iteradores apontando para o valor mais próximo maior que val , se houver, ou para o último, se val comparar maior que todos os elementos no alcance.
Exceções
Lança exceção se a comparação de elemento ou uma operação em um iterador lança exceção.
Observe que os parâmetros inválidos causam um comportamento indefinido.
Complexidade de tempo
Aproximadamente 2 * log2 (n) +1 elemento.
Exemplo
O exemplo a seguir mostra o uso da função std :: algorithm :: 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;
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
Element 2 occurs 3 times.