Hvad er metoden lower_Bound() i C++

Hvad Er Metoden Lower Bound I C



C++ programmeringssproget tilbyder en bred vifte af funktioner og metoder, der er flittigt brugt. Lower_bound()-metoden er en sådan funktion, der bruges til at finde den første forekomst af en given værdi i en sorteret container. Denne artikel dækker syntaks, parametre, returværdier og en eksempelkode for metoden lower_bound() i C++.

Hvad er metoden lower_bound()?

Lower_bound()-metoden i C++ finder den første forekomst af en given værdi i en sorteret container. Det er en del af -biblioteket i C++ og bruges til at udføre binære søgninger på arrays, vektorer og andre sorterede beholdere. Lower_bound()-metoden returnerer en iterator, der peger på det første element i et specificeret område af en container, som ikke er mindre end den angivne værdi.

Syntaks







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



Standard syntaks

Standardsyntaksen indtager en ForwardIterator, der peger på henholdsvis det første og forbi de sidste elementer i området, der skal søges i, og en værdi for at sammenligne elementerne i området.



ForwardIterator nedre_grænse ( ForwardIterator først , ForwardIterator sidst , konst T & val ) ;

Brugerdefineret syntaks

Den brugerdefinerede syntaks indtager desuden en brugerdefineret binær prædikatfunktion, der følger en streng, svag rækkefølge for at bestille elementerne.





ForwardIterator nedre_grænse ( ForwardIterator først , ForwardIterator sidst , konst T & val , Sammenlign komp ) ;

Parametre

Lower_bound()-metoden i C++ tager tre parametre.

Først sidst: De første to parametre, 'første' og 'sidste', bestemmer området [første, sidste), inden for hvilket metoden søger efter den nedre grænse. Området er specificeret af to parametre, nemlig 'første' og 'sidste'. Området omfatter alle elementerne mellem 'første' og 'sidste' iterator, men udelukker det element, der peges på af 'sidste' iterator.



værdi: Den tredje parameter i metoden lower_bound() omtales som 'val'. Det repræsenterer værdien af ​​den nedre grænse, der skal findes inden for det angivne interval. Når metoden lower_bound() kaldes, søger den efter det første element inden for det angivne område af en beholder, der er større end eller lig med den givne værdi 'val'.

comp: Lower_bound()-metoden kan også acceptere en binær sammenligningsfunktion som dens fjerde parameter. Det kræver to argumenter: Den type, der peges af ForwardIterator , og det andet er val . Funktionen returnerer derefter en boolsk værdi baseret på en sammenligning mellem de to argumenter. Comp-argumentet ændrer ikke nogen af ​​dets argumenter, og det kan kun være en funktionsmarkør eller et funktionsobjekt.

Returværdi

Lower_bound() returnerer en iterator, der peger mod det første element, der er større end eller lig med val . Hvis alle elementer i det angivne område af en beholder er mindre end den givne værdi val , returnerer metoden lower_bound() en iterator, der peger på det sidste element i området, og hvis alle elementer er større end val , giver det en iterator, der peger på det første element i området.

Eksempel kode

Denne C++-kode demonstrerer brugen af ​​std::lower_bound()-funktionen til at finde det første element i en sorteret vektor, der ikke er mindre end en given værdi.

#include

int vigtigste ( )

{

// Input vektor

std :: vektor < dobbelt > værdier { 10 , femten , tyve , 25 , 30 } ;

// Udskriv vektor

std :: cout << 'Vektor indeholder:' ;

til ( usigneret int jeg = 0 ; jeg < værdier. størrelse ( ) ; jeg ++ )

std :: cout << ' ' << værdier [ jeg ] ;

std :: cout << ' \n ' ;

std :: vektor < dobbelt >:: iterator det1 , det2 , det 3 ;

// std :: nedre_grænse

det1 = std :: nedre grænse ( værdier. begynde ( ) , værdier. ende ( ) , 13 ) ;

det2 = std :: nedre grænse ( værdier. begynde ( ) , værdier. ende ( ) , 23 ) ;

det 3 = std :: nedre grænse ( værdier. begynde ( ) , værdier. ende ( ) , 33 ) ;

std :: cout

<< ' \n nedre_grænse for element 13 ved position: '

<< ( det1 - værdier. begynde ( ) ) ;

std :: cout

<< ' \n nedre_grænse for element 23 ved position: '

<< ( det2 - værdier. begynde ( ) ) ;

std :: cout

<< ' \n nedre_grænse for element 33 ved position: '

<< ( det 3 - værdier. begynde ( ) ) ;

Vend tilbage 0 ;

}

Koden starter med at definere en std::vektor af typen dobbeltnavnede værdier og initialisere den med nogle værdier. Den udskriver derefter elementerne i vektoren ved hjælp af en for-løkke.

Dernæst erklærer koden tre std::vector::iteratorvariabler ved navn it1, it2 og it3. Disse variabler vil blive brugt til at gemme resultaterne af at kalde std::lower_bound() på værdivektoren med forskellige argumenter.

Funktionen std::lower_bound() kaldes med tre forskellige værdier: 13, 23 og 33. Ved hvert kald giver lower_bound() en iterator, der peger mod det første element i vektoren, der er større end eller lig med angivne værdi.

Koden udskriver derefter disse elementers positioner i vektoren ved at trække values.begin() iteratoren fra iteratoren returneret af std::lower_bound(), som giver indekset for elementet i vektoren.

Produktion

Konklusion

Lower_bound()-metoden i C++ finder den første forekomst af en given værdi i en sorteret container. Det er en del af -biblioteket i C++ og kan bruges til at udføre binære søgninger på arrays, vektorer og andre sorterede beholdere. Metoden giver en iterator, der peger mod det første element i et interval, der ikke er mindre end den givne værdi. Læs mere om metoden lower_bound() i denne artikel.