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 la funzione di confronto binario 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, class Compare>
pair<ForwardIterator,ForwardIterator>
equal_range (ForwardIterator first, ForwardIterator last,const T& val, Compare comp);

Parametri

  • first - Inoltra l'iteratore alla posizione iniziale.

  • last - Inoltra l'iteratore alla posizione finale.

  • val - Valore per confrontare gli elementi.

  • comp - Una funzione binaria che accetta due argomenti e restituisce un valore bool.

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;

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;
}

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

Element 2 occurs 3 times.