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.