Čo je to metóda Lower_bound()?
Metóda lower_bound() v C++ nájde prvý výskyt danej hodnoty v triedenom kontajneri. Je súčasťou knižnice
Syntax
Metóda lower_bound() v C++ má dve variácie: predvolenú a vlastnú syntax.
Predvolená syntax
Predvolená syntax obsahuje ForwardIterator, ktorý ukazuje na prvý a posledný prvok v rozsahu, ktorý sa má vyhľadať, a hodnotu na porovnanie prvkov v rozsahu.
Dolná_medza ForwardIterator ( Najprv ForwardIterator , ForwardIterator posledný , konšt T & val ) ;
Vlastná syntax
Vlastná syntax navyše preberá užívateľom definovanú funkciu binárneho predikátu, ktorá sa riadi striktne slabým usporiadaním prvkov.
Dolná_medza ForwardIterator ( Najprv ForwardIterator , ForwardIterator posledný , konšt T & val , Porovnať komp ) ;
Parametre
Metóda lower_bound() v C++ má tri parametre.
Prvý posledný: Prvé dva parametre, „prvý“ a „posledný“, určujú rozsah [prvý, posledný), v rámci ktorého metóda hľadá dolnú hranicu. Rozsah je určený dvoma parametrami, a to „prvý“ a „posledný“. Rozsah zahŕňa všetky prvky medzi „prvým“ a „posledným“ iterátorom, ale vylučuje prvok, na ktorý poukazuje „posledný“ iterátor.
val: Tretí parameter metódy lower_bound() sa označuje ako „val“. Predstavuje hodnotu dolnej hranice, ktorú je potrebné nájsť v určenom rozsahu. Keď sa zavolá metóda lower_bound(), vyhľadá prvý prvok v špecifikovanom rozsahu kontajnera, ktorý je väčší alebo rovný danej hodnote „val“.
comp: Metóda Lower_bound() môže tiež akceptovať funkciu binárneho porovnávania ako svoj štvrtý parameter. Vyžaduje dva argumenty: Typ, na ktorý poukazuje ForwardIterator , a druhý je val . Funkcia potom vráti boolovskú hodnotu na základe porovnania medzi týmito dvoma argumentmi. Argument comp nemení žiadny zo svojich argumentov a môže to byť iba ukazovateľ funkcie alebo objekt funkcie.
Návratová hodnota
Lower_bound() vracia iterátor, ktorý ukazuje na prvý prvok, ktorý je väčší alebo rovný ako val . Ak sú všetky prvky v zadanom rozsahu kontajnera menšie ako zadaná hodnota val metóda Lower_bound() vráti iterátor ukazujúci na posledný prvok v rozsahu a ak sú všetky prvky väčšie ako val , dáva iterátor, ktorý ukazuje na prvý prvok v rozsahu.
Príklad kódu
Tento kód C++ demonštruje použitie funkcie std::lower_bound() na nájdenie prvého prvku v zoradenom vektore, ktorý nie je menší ako daná hodnota.
#includeint Hlavná ( )
{
// Vstupný vektor
std :: vektor < dvojitý > hodnoty { 10 , pätnásť , dvadsať , 25 , 30 } ;
// Tlač vektora
std :: cout << 'Vektor obsahuje:' ;
pre ( nepodpísané int i = 0 ; i < hodnoty. veľkosť ( ) ; i ++ )
std :: cout << '' << hodnoty [ i ] ;
std :: cout << ' \n ' ;
std :: vektor < dvojitý >:: iterátor to1 , to2 , to3 ;
// std :: dolná_medza
to1 = std :: nižšia hranica ( hodnoty. začať ( ) , hodnoty. koniec ( ) , 13 ) ;
to2 = std :: nižšia hranica ( hodnoty. začať ( ) , hodnoty. koniec ( ) , 23 ) ;
to3 = std :: nižšia hranica ( hodnoty. začať ( ) , hodnoty. koniec ( ) , 33 ) ;
std :: cout
<< ' \n dolná_medza pre prvok 13 na pozícii: '
<< ( to1 - hodnoty. začať ( ) ) ;
std :: cout
<< ' \n dolná_medza pre prvok 23 na pozícii: '
<< ( to2 - hodnoty. začať ( ) ) ;
std :: cout
<< ' \n dolná_medza pre prvok 33 na pozícii: '
<< ( to3 - hodnoty. začať ( ) ) ;
vrátiť 0 ;
}
Kód začína definovaním std::vektora typu s dvojitým názvom a jeho inicializáciou s niektorými hodnotami. Potom vytlačí prvky vektora pomocou cyklu for.
Ďalej kód deklaruje tri premenné std::vector
Funkcia std::lower_bound() sa volá s tromi rôznymi hodnotami: 13, 23 a 33. Pri každom volaní poskytuje Lower_bound() iterátor, ktorý ukazuje na prvý prvok vo vektore, ktorý je väčší alebo rovný špecifikovaná hodnota.
Kód potom vypíše pozície týchto prvkov vo vektore odčítaním iterátora values.begin() od iterátora vráteného funkciou std::lower_bound(), ktorý udáva index prvku vo vektore.
Výkon
Záver
Metóda lower_bound() v C++ nájde prvý výskyt danej hodnoty v triedenom kontajneri. Je súčasťou knižnice