Kas yra Low_Bound() metodas C++

Kas Yra Low Bound Metodas C



C++ programavimo kalba siūlo platų funkcijų ir metodų spektrą, kurie yra plačiai naudojami. Apatinės_ribos () metodas yra viena iš tokių funkcijų, kuri naudojama norint rasti pirmą kartą surūšiuotame konteineryje pateiktą reikšmę. Šiame straipsnyje aprašoma C++ metodo „low_bound()“ sintaksė, parametrai, grąžinimo reikšmės ir pavyzdinis kodas.

Kas yra apatinės_ribos() metodas?

Apatinės_ribos() metodas C++ aptinka pirmą duotosios reikšmės atvejį surūšiuotame konteineryje. Tai yra C++ bibliotekos dalis ir naudojama dvejetainei paieškai masyvuose, vektoriuose ir kituose surūšiuotuose konteineriuose atlikti. Metodas Low_bound() grąžina iteratorių, nukreipiantį į pirmąjį elementą nurodytame konteinerio diapazone, kuris yra ne mažesnis už pateiktą reikšmę.

Sintaksė







Low_bound() metodas C++ turi du variantus: numatytąją ir pasirinktinę sintaksę.



Numatytoji sintaksė

Numatytoji sintaksė naudoja ForwardIterator, nukreipiantį atitinkamai į pirmąjį ir po paskutinius elementus diapazone, kurio reikia ieškoti, ir reikšmę, kad būtų galima palyginti diapazono elementus.



„ForwardIterator“ apatinė riba ( Pirmiausia „ForwardIterator“. , ForwardIterator paskutinis , konst T & val ) ;

Pasirinktinė sintaksė

Pasirinktinėje sintaksėje papildomai naudojama vartotojo apibrėžta dvejetainio predikato funkcija, kuri griežtai silpnai nustato elementų tvarką.





„ForwardIterator“ apatinė riba ( Pirmiausia „ForwardIterator“. , ForwardIterator paskutinis , konst T & val , Palyginkite komp ) ;

Parametrai

Low_bound() metodas C++ naudoja tris parametrus.

Pirmas Paskutinis: Pirmieji du parametrai „pirmas“ ir „paskutinis“ nustato diapazoną [pirmas, paskutinis), kuriame metodas ieško apatinės ribos. Diapazonas nurodomas dviem parametrais, būtent „pirmasis“ ir „paskutinis“. Diapazonas apima visus elementus tarp „pirmojo“ ir „paskutinio“ iteratoriaus, bet neįtraukia elemento, į kurį nurodė „paskutinis“ iteratorius.



val: Trečiasis apatinės_ribos() metodo parametras vadinamas „val“. Tai reiškia apatinės ribos vertę, kurią reikia rasti nurodytame diapazone. Kai iškviečiamas apatinės_ribos() metodas, jis ieško pirmojo elemento nurodytame konteinerio diapazone, kuris yra didesnis arba lygus nurodytai reikšmei „val“.

kompas: Low_bound() metodas taip pat gali priimti dvejetainę palyginimo funkciją kaip ketvirtąjį parametrą. Reikia dviejų argumentų: tipas, nurodytas ForwardIterator , o antrasis yra val . Tada funkcija grąžina Būlio reikšmę, pagrįstą dviejų argumentų palyginimu. Argumentas comp nekeičia jokių argumentų ir gali būti tik funkcijos rodyklė arba funkcijos objektas.

Grąžinimo vertė

Low_bound() grąžina iteratorių, nukreipiantį į pirmąjį elementą, kuris yra didesnis arba lygus val . Jei visi nurodyto konteinerio diapazono elementai yra mažesni už nurodytą reikšmę val , metodas bottom_bound() grąžina iteratorių, nukreipiantį į paskutinį diapazono elementą, ir jei visi elementai yra didesni nei val , tai suteikia iteratorių, kuris nurodo pirmąjį diapazono elementą.

Kodo pavyzdys

Šis C++ kodas demonstruoja funkcijos std::lower_bound() naudojimą, norint rasti pirmąjį elementą surūšiuotame vektoriuje, kuris yra ne mažesnis už nurodytą reikšmę.

#include

tarpt pagrindinis ( )

{

// Įvesties vektorius

std :: vektorius < dvigubai > vertybes { 10 , penkiolika , dvidešimt , 25 , 30 } ;

// Spausdinti vektorių

std :: cout << 'Vektoriuje yra:' ;

dėl ( nepasirašytas tarpt i = 0 ; i < vertybes. dydis ( ) ; i ++ )

std :: cout << ' ' << vertybes [ i ] ;

std :: cout << \n ;

std :: vektorius < dvigubai >:: iteratorius it1 , it2 , it3 ;

// std :: apatinė riba

it1 = std :: apatinė riba ( vertybes. pradėti ( ) , vertybes. galas ( ) , 13 ) ;

it2 = std :: apatinė riba ( vertybes. pradėti ( ) , vertybes. galas ( ) , 23 ) ;

it3 = std :: apatinė riba ( vertybes. pradėti ( ) , vertybes. galas ( ) , 33 ) ;

std :: cout

<< \n 13 elemento apatinė riba padėtyje: '

<< ( it1 - vertybes. pradėti ( ) ) ;

std :: cout

<< \n 23 elemento apatinė riba padėtyje: '

<< ( it2 - vertybes. pradėti ( ) ) ;

std :: cout

<< \n 33 elemento apatinė riba pozicijoje: '

<< ( it3 - vertybes. pradėti ( ) ) ;

grąžinti 0 ;

}

Kodas pradedamas apibrėžiant std::vektorių, kurio tipas yra dvigubai pavadintos reikšmės, ir inicijuojant jį kai kuriomis reikšmėmis. Tada jis atspausdina vektoriaus elementus naudodamas for kilpą.

Tada kodas deklaruoja tris std::vector::iterator kintamuosius, pavadintus it1, it2 ir it3. Šie kintamieji bus naudojami std::lower_bound() iškvietimo rezultatams saugoti reikšmių vektoriuje su skirtingais argumentais.

Funkcija std::lower_bound() iškviečiama su trimis skirtingomis reikšmėmis: 13, 23 ir 33. Kiekvieno iškvietimo metu Lower_bound() pateikia iteratorių, nukreipiantį į pirmąjį vektoriaus elementą, kuris yra didesnis arba lygus nurodytą vertę.

Tada kodas atspausdina šių elementų pozicijas vektoriuje, atimdamas reikšmes.begin() iteratorius iš iteratoriaus, kurį grąžino std::lower_bound(), kuris suteikia elemento indeksą vektoryje.

Išvestis

Išvada

Apatinės_ribos() metodas C++ aptinka pirmąjį nurodytos reikšmės atvejį surūšiuotame konteineryje. Tai yra C++ bibliotekos dalis ir gali būti naudojama dvejetainei paieškai masyvuose, vektoriuose ir kituose surūšiuotuose konteineriuose atlikti. Metodas suteikia iteratorių, nukreipiantį į pirmąjį elementą diapazone, kuris yra ne mažesnis už nurodytą reikšmę. Skaitykite daugiau apie apatinės_ribos() metodą šiame straipsnyje.