Kaj je metoda lower_bound()?
Metoda lower_bound() v C++ najde prvo pojavitev dane vrednosti v razvrščenem vsebniku. Je del knjižnice
Sintaksa
Metoda lower_bound() v C++ ima dve različici: privzeto in sintakso po meri.
Privzeta sintaksa
Privzeta sintaksa vključuje ForwardIterator, ki kaže na prvi in zadnji element v obsegu, ki ga je treba preiskati, in vrednost za primerjavo elementov v obsegu.
Spodnja_meja ForwardIterator ( Najprej ForwardIterator , ForwardIterator zadnji , konst T & val ) ;
Sintaksa po meri
Sintaksa po meri poleg tega vključuje uporabniško definirano binarno predikatno funkcijo, ki sledi strogemu šibkemu vrstnemu redu za razvrščanje elementov.
Spodnja_meja ForwardIterator ( Najprej ForwardIterator , ForwardIterator zadnji , konst T & val , Primerjaj komp ) ;
Parametri
Metoda lower_bound() v C++ ima tri parametre.
Prvi zadnji: Prva dva parametra, »prvi« in »zadnji«, določata obseg [prvi, zadnji), znotraj katerega metoda išče spodnjo mejo. Obseg je določen z dvema parametroma, in sicer »prvi« in »zadnji«. Obseg vključuje vse elemente med 'prvim' in 'zadnjim' iteratorjem, vendar izključuje element, na katerega kaže 'zadnji' iterator.
val: Tretji parameter metode lower_bound() se imenuje 'val'. Predstavlja vrednost spodnje meje, ki jo je treba najti v določenem obsegu. Ko se pokliče metoda lower_bound(), išče prvi element znotraj podanega obsega vsebnika, ki je večji ali enak dani vrednosti 'val'.
comp: Metoda lower_bound() lahko sprejme tudi binarno primerjalno funkcijo kot svoj četrti parameter. Potrebuje dva argumenta: tip, na katerega kaže ForwardIterator , in drugi je val . Funkcija nato vrne logično vrednost na podlagi primerjave med obema argumentoma. Argument comp ne spremeni nobenega od svojih argumentov in je lahko le funkcijski kazalec ali funkcijski objekt.
Povratna vrednost
Lower_bound() vrne iterator, ki kaže na prvi element, ki je večji ali enak val . Če so vsi elementi v podanem obsegu vsebnika manjši od dane vrednosti val , metoda lower_bound() vrne iterator, ki kaže na zadnji element v obsegu, in če so vsi elementi večji od val , daje iterator, ki kaže na prvi element v območju.
Primer kode
Ta koda C++ prikazuje uporabo funkcije std::lower_bound() za iskanje prvega elementa v razvrščenem vektorju, ki ni manjši od dane vrednosti.
#includeint glavni ( )
{
// Vhodni vektor
std :: vektor < dvojno > vrednote { 10 , petnajst , dvajset , 25 , 30 } ;
// Natisni vektor
std :: cout << 'Vektor vsebuje:' ;
za ( nepodpisan int jaz = 0 ; jaz < vrednote. velikost ( ) ; jaz ++ )
std :: cout << ' ' << vrednote [ jaz ] ;
std :: cout << ' \n ' ;
std :: vektor < dvojno >:: iterator it1 , it2 , it3 ;
// std :: spodnja_meja
it1 = std :: spodnja_meja ( vrednote. začeti ( ) , vrednote. konec ( ) , 13 ) ;
it2 = std :: spodnja_meja ( vrednote. začeti ( ) , vrednote. konec ( ) , 23 ) ;
it3 = std :: spodnja_meja ( vrednote. začeti ( ) , vrednote. konec ( ) , 33 ) ;
std :: cout
<< ' \n spodnja_meja za element 13 na položaju: '
<< ( it1 - vrednote. začeti ( ) ) ;
std :: cout
<< ' \n spodnja_meja za element 23 na položaju: '
<< ( it2 - vrednote. začeti ( ) ) ;
std :: cout
<< ' \n spodnja_meja za element 33 na položaju: '
<< ( it3 - vrednote. začeti ( ) ) ;
vrnitev 0 ;
}
Koda se začne z definiranjem std::vectorja tipa dvojno imenovanih vrednosti in njegovo inicializacijo z nekaterimi vrednostmi. Nato natisne elemente vektorja z uporabo zanke for.
Nato koda deklarira tri spremenljivke std::vector
Funkcija std::lower_bound() se kliče s tremi različnimi vrednostmi: 13, 23 in 33. Pri vsakem klicu bottom_bound() poda iterator, ki kaže na prvi element v vektorju, ki je večji ali enak določeno vrednost.
Koda nato natisne položaje teh elementov v vektorju tako, da odšteje iterator values.begin() od iteratorja, ki ga vrne std::lower_bound(), kar poda indeks elementa v vektorju.
Izhod
Zaključek
Metoda lower_bound() v C++ najde prvo pojavitev dane vrednosti v razvrščenem vsebniku. Je del knjižnice