Libreria di algoritmi C ++ - funzione equal_range ()

Descrizione

La funzione C ++ std::algorithm::equal_range()restituisce un intervallo di elementi che corrisponde a una chiave specifica. Utilizza l' operatore < per il confronto. L'elemento dell'intervallo deve essere ordinato.

Dichiarazione

Di seguito è la dichiarazione per std :: algoritmo :: equal_range () modulo std :: intestazione algoritmo.

C ++ 98

template <class ForwardIterator, class T>
pair<ForwardIterator,ForwardIterator>
equal_range (ForwardIterator first, ForwardIterator last, const T& val);

Parametri

  • first - Inoltra l'iteratore alla posizione iniziale.

  • last - Inoltra l'iteratore alla posizione finale.

  • val - valore per confrontare gli elementi.

Valore di ritorno

Restituisce un sottointervallo se l'elemento trova. Se val non è equivalente a nessun valore nell'intervallo, il sottointervallo restituito ha una lunghezza pari a zero, con entrambi gli iteratori che puntano al valore più vicino maggiore di val , se esiste, o all'ultimo, se val confronta maggiore di tutti gli elementi nel gamma.

Eccezioni

Genera un'eccezione se il confronto di elementi o un'operazione su un iteratore genera un'eccezione.

Tieni presente che i parametri non validi causano un comportamento indefinito.

Complessità temporale

Circa 2 * log2 (n) +1 elemento.

Esempio

L'esempio seguente mostra l'utilizzo della funzione std :: algoritmo :: 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;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

Element 2 occurs 4 times.