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 o operador < 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>
pair<ForwardIterator,ForwardIterator>
equal_range (ForwardIterator first, ForwardIterator last, const T& val);
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.
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;
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;
}
Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -
Element 2 occurs 4 times.