Hva er lower_Bound()-metoden i C++

Hva Er Lower Bound Metoden I C



Programmeringsspråket C++ tilbyr et bredt spekter av funksjoner og metoder som er mye brukt. Lower_bound()-metoden er en slik funksjon som brukes til å finne den første forekomsten av en gitt verdi i en sortert beholder. Denne artikkelen dekker syntaks, parametere, returverdier og en eksempelkode for metoden lower_bound() i C++.

Hva er nedre_grense()-metoden?

Lower_bound()-metoden i C++ finner den første forekomsten av en gitt verdi i en sortert beholder. Det er en del av -biblioteket i C++ og brukes til å utføre binære søk på arrays, vektorer og andre sorterte beholdere. Lower_bound()-metoden returnerer en iterator som peker til det første elementet i et spesifisert område av en beholder, som ikke er mindre enn den angitte verdien.

Syntaks







Lower_bound()-metoden i C++ har to varianter: en standard og en tilpasset syntaks.



Standard syntaks

Standardsyntaksen tar inn en ForwardIterator som peker til henholdsvis det første og forbi de siste elementene i området det skal søkes i, og en verdi for å sammenligne elementene i området.



ForwardIterator nedre_grense ( ForwardIterator først , ForwardIterator sist , konst T & val ) ;

Egendefinert syntaks

Den tilpassede syntaksen tar i tillegg inn en brukerdefinert binær predikatfunksjon som følger streng svak rekkefølge for å bestille elementene.





ForwardIterator nedre_grense ( ForwardIterator først , ForwardIterator sist , konst T & val , Sammenlign komp ) ;

Parametere

Lower_bound()-metoden i C++ tar tre parametere.

Først sist: De to første parameterne, 'første' og 'siste', bestemmer området [første, siste) som metoden søker etter den nedre grensen innenfor. Området er spesifisert av to parametere, nemlig 'første' og 'siste'. Området inkluderer alle elementene mellom den «første» og «siste» iteratoren, men ekskluderer elementet som den «siste» iteratoren peker på.



verdi: Den tredje parameteren til lower_bound()-metoden refereres til som 'val'. Den representerer verdien av den nedre grensen som må finnes innenfor det angitte området. Når metoden lower_bound() kalles, søker den etter det første elementet innenfor det spesifiserte området til en beholder som er større enn eller lik den gitte verdien 'val'.

komp: Lower_bound()-metoden kan også akseptere en binær sammenligningsfunksjon som sin fjerde parameter. Det krever to argumenter: Typen pekt av ForwardIterator , og den andre er val . Funksjonen returnerer deretter en boolsk verdi basert på en sammenligning mellom de to argumentene. Comp-argumentet endrer ikke noen av argumentene, og det kan bare være en funksjonspeker eller et funksjonsobjekt.

Returverdi

Lower_bound() returnerer en iterator som peker mot det første elementet som er større enn eller lik val . Hvis alle elementene i det angitte området til en beholder er mindre enn den gitte verdien val , returnerer metoden lower_bound() en iterator som peker til det siste elementet i området, og hvis alle elementene er større enn val , gir det en iterator som peker til det første elementet i området.

Eksempelkode

Denne C++-koden demonstrerer bruken av std::lower_bound()-funksjonen for å finne det første elementet i en sortert vektor som ikke er mindre enn en gitt verdi.

#include

int hoved- ( )

{

// Inndatavektor

std :: vektor < dobbelt > verdier { 10 , femten , tjue , 25 , 30 } ;

// Skriv ut vektor

std :: cout << 'Vektor inneholder:' ;

til ( usignert int Jeg = 0 ; Jeg < verdier. størrelse ( ) ; Jeg ++ )

std :: cout << ' ' << verdier [ Jeg ] ;

std :: cout << ' \n ' ;

std :: vektor < dobbelt >:: iterator it1 , it2 , it3 ;

// std :: nedre_grense

it1 = std :: nedre_grense ( verdier. begynne ( ) , verdier. slutt ( ) , 1. 3 ) ;

it2 = std :: nedre_grense ( verdier. begynne ( ) , verdier. slutt ( ) , 23 ) ;

it3 = std :: nedre_grense ( verdier. begynne ( ) , verdier. slutt ( ) , 33 ) ;

std :: cout

<< ' \n nedre_grense for element 13 ved posisjon: '

<< ( it1 - verdier. begynne ( ) ) ;

std :: cout

<< ' \n nedre_grense for element 23 ved posisjon: '

<< ( it2 - verdier. begynne ( ) ) ;

std :: cout

<< ' \n nedre_grense for element 33 ved posisjon: '

<< ( it3 - verdier. begynne ( ) ) ;

komme tilbake 0 ;

}

Koden starter med å definere en std::vektor av typen dobbeltnavnverdier og initialisere den med noen verdier. Den skriver deretter ut elementene i vektoren ved å bruke en for-løkke.

Deretter erklærer koden tre std::vector::iteratorvariabler kalt it1, it2 og it3. Disse variablene vil bli brukt til å lagre resultatene av å kalle std::lower_bound() på verdivektoren med forskjellige argumenter.

Std::lower_bound()-funksjonen kalles med tre forskjellige verdier: 13, 23 og 33. På hvert kall gir nedre_bound() en iterator som peker mot det første elementet i vektoren som er større enn eller lik spesifisert verdi.

Koden skriver deretter ut posisjonene til disse elementene i vektoren ved å trekke iteratoren values.begin() fra iteratoren returnert av std::lower_bound(), som gir indeksen til elementet i vektoren.

Produksjon

Konklusjon

Lower_bound()-metoden i C++ finner den første forekomsten av en gitt verdi i en sortert beholder. Det er en del av -biblioteket i C++ og kan brukes til å utføre binære søk på arrays, vektorer og andre sorterte beholdere. Metoden gir en iterator som peker mot det første elementet i et område som ikke er mindre enn den gitte verdien. Les mer om lower_bound()-metoden i denne artikkelen.