Cos'è il metodo lower_bound()?
Il metodo lower_bound() in C++ trova la prima occorrenza di un determinato valore in un contenitore ordinato. Fa parte della libreria
Sintassi
Il metodo lower_bound() in C++ ha due varianti: una sintassi predefinita e una personalizzata.
Sintassi predefinita
La sintassi predefinita accetta un ForwardIterator che punta rispettivamente al primo e all'ultimo elemento nell'intervallo in cui eseguire la ricerca e un valore per confrontare gli elementi nell'intervallo.
ForwardIterator lower_bound ( ForwardIterator prima , ForwardIterator ultimo , cost T & val ) ;
Sintassi personalizzata
La sintassi personalizzata accetta inoltre una funzione di predicato binario definita dall'utente che segue un rigoroso ordinamento debole per ordinare gli elementi.
ForwardIterator lower_bound ( ForwardIterator prima , ForwardIterator ultimo , cost T & val , Confronta comp ) ;
Parametri
Il metodo lower_bound() in C++ accetta tre parametri.
Primo ultimo: I primi due parametri, “first” e “last”, determinano l'intervallo [first, last) all'interno del quale il metodo cerca il limite inferiore. L'intervallo è specificato da due parametri, vale a dire 'first' e 'last'. L'intervallo include tutti gli elementi tra il 'primo' e l''ultimo' iteratore ma esclude l'elemento indicato dall''ultimo' iteratore.
valore: Il terzo parametro del metodo lower_bound() è indicato come 'val'. Rappresenta il valore del limite inferiore che deve essere trovato all'interno dell'intervallo specificato. Quando viene chiamato il metodo lower_bound(), cerca il primo elemento all'interno dell'intervallo specificato di un contenitore che è maggiore o uguale al valore dato 'val'.
comp: Il metodo lower_bound() può anche accettare una funzione di confronto binario come quarto parametro. Richiede due argomenti: Il tipo indicato da ForwardIterator , e il secondo è val . La funzione restituisce quindi un valore booleano basato su un confronto tra i due argomenti. L'argomento comp non cambia nessuno dei suoi argomenti e può essere solo un puntatore a funzione o un oggetto funzione.
Valore di ritorno
Il lower_bound() restituisce un iteratore che punta verso il primo elemento che è maggiore o uguale a val . Se tutti gli elementi nell'intervallo specificato di un contenitore sono inferiori al valore specificato val , il metodo lower_bound() restituisce un iteratore che punta all'ultimo elemento dell'intervallo e se tutti gli elementi sono maggiori di val , restituisce un iteratore che punta al primo elemento dell'intervallo.
Esempio Codice
Questo codice C++ dimostra l'uso della funzione std::lower_bound() per trovare il primo elemento in un vettore ordinato che non sia minore di un dato valore.
#includeint principale ( )
{
// Vettore di input
standard :: vettore < Doppio > valori { 10 , quindici , venti , 25 , 30 } ;
// Stampa il vettore
standard :: cout << 'Il vettore contiene:' ;
per ( non firmato int io = 0 ; io < valori. misurare ( ) ; io ++ )
standard :: cout << ' ' << valori [ io ] ;
standard :: cout << ' \N ' ;
standard :: vettore < Doppio >:: iteratore esso1 , esso2 , it3 ;
// std :: limite_inferiore
esso1 = standard :: limite inferiore ( valori. inizio ( ) , valori. FINE ( ) , 13 ) ;
esso2 = standard :: limite inferiore ( valori. inizio ( ) , valori. FINE ( ) , 23 ) ;
it3 = standard :: limite inferiore ( valori. inizio ( ) , valori. FINE ( ) , 33 ) ;
standard :: cout
<< ' \N lower_bound per l'elemento 13 alla posizione: '
<< ( esso1 - valori. inizio ( ) ) ;
standard :: cout
<< ' \N lower_bound per l'elemento 23 alla posizione: '
<< ( esso2 - valori. inizio ( ) ) ;
standard :: cout
<< ' \N lower_bound per l'elemento 33 alla posizione: '
<< ( it3 - valori. inizio ( ) ) ;
ritorno 0 ;
}
Il codice inizia definendo un std::vector di tipo double-named values e inizializzandolo con alcuni valori. Quindi stampa gli elementi del vettore usando un ciclo for.
Successivamente, il codice dichiara tre variabili std::vector
La funzione std::lower_bound() viene chiamata con tre diversi valori: 13, 23 e 33. Ad ogni chiamata, lower_bound() fornisce un iteratore che punta verso il primo elemento nel vettore che è maggiore o uguale al valore specificato.
Il codice quindi stampa le posizioni di questi elementi nel vettore sottraendo l'iteratore values.begin() dall'iteratore restituito da std::lower_bound(), che fornisce l'indice dell'elemento nel vettore.
Produzione
Conclusione
Il metodo lower_bound() in C++ trova la prima occorrenza di un determinato valore in un contenitore ordinato. Fa parte della libreria