Čo je to metóda Lower_Bound() v C++

Co Je To Metoda Lower Bound V C



Programovací jazyk C++ ponúka širokú škálu funkcií a metód, ktoré sú široko používané. Metóda lower_bound() je jednou z takýchto funkcií, ktorá sa používa na nájdenie prvého výskytu danej hodnoty v triedenom kontajneri. Tento článok obsahuje syntax, parametre, návratové hodnoty a príklad kódu pre metódu lower_bound() v C++.

Č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 v C++ a používa sa na vykonávanie binárneho vyhľadávania polí, vektorov a iných triedených kontajnerov. Metóda lower_bound() vracia iterátor, ktorý ukazuje na prvý prvok v špecifikovanom rozsahu kontajnera, ktorý nie je menší ako zadaná hodnota.

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.

#include

int 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::iterator s názvom it1, it2 a it3. Tieto premenné sa použijú na uloženie výsledkov volania std::lower_bound() vo vektore hodnôt s rôznymi argumentmi.

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 v C++ a môže sa použiť na vykonávanie binárneho vyhľadávania polí, vektorov a iných triedených kontajnerov. Metóda poskytuje iterátor, ktorý ukazuje na prvý prvok v rozsahu, ktorý nie je menší ako daná hodnota. Prečítajte si viac o metóde Lower_bound() v tomto článku.