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.