Qual è il metodo lower_Bound() in C++

Qual E Il Metodo Lower Bound In C



Il linguaggio di programmazione C++ offre un'ampia gamma di funzioni e metodi ampiamente utilizzati. Il metodo lower_bound() è una di queste funzioni che viene utilizzata per trovare la prima occorrenza di un determinato valore in un contenitore ordinato. Questo articolo illustra la sintassi, i parametri, i valori restituiti e un codice di esempio per il metodo lower_bound() in C++.

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 in C++ e viene utilizzato per eseguire ricerche binarie su array, vettori e altri contenitori ordinati. Il metodo lower_bound() restituisce un iteratore che punta al primo elemento in un intervallo specificato di un contenitore, che non è inferiore al valore fornito.

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.

#include

int 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::iterator denominate it1, it2 e it3. Queste variabili verranno utilizzate per memorizzare i risultati della chiamata a std::lower_bound() sul vettore dei valori con argomenti diversi.

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 in C++ e può essere utilizzato per eseguire ricerche binarie su array, vettori e altri contenitori ordinati. Il metodo fornisce un iteratore che punta verso il primo elemento in un intervallo che non è inferiore al valore dato. Maggiori informazioni sul metodo lower_bound() in questo articolo.