Co je metoda Lower_Bound() v C++

Co Je Metoda Lower Bound V C



Programovací jazyk C++ nabízí širokou škálu funkcí a metod, které jsou široce používány. Metoda lower_bound() je jednou z takových funkcí, která se používá k nalezení prvního výskytu dané hodnoty v seřazeném kontejneru. Tento článek popisuje syntaxi, parametry, návratové hodnoty a příklad kódu pro metodu lower_bound() v C++.

Co je metoda Lower_bound()?

Metoda lower_bound() v C++ najde první výskyt dané hodnoty v seřazeném kontejneru. Je součástí knihovny v C++ a používá se k provádění binárních prohledávání polí, vektorů a dalších tříděných kontejnerů. Metoda lower_bound() vrací iterátor, který ukazuje na první prvek v určeném rozsahu kontejneru, který není menší než zadaná hodnota.

Syntax







Metoda lower_bound() v C++ má dvě varianty: výchozí a vlastní syntaxi.



Výchozí syntaxe

Výchozí syntaxe obsahuje ForwardIterator ukazující na první a za poslední prvky v rozsahu, který má být prohledán, a hodnotu pro porovnání prvků v rozsahu.



ForwardIterator dolní_mez ( Nejprve ForwardIterator , ForwardIterator jako poslední , konst T & val ) ;

Vlastní syntaxe

Vlastní syntaxe navíc přebírá uživatelem definovanou binární predikátovou funkci, která se řídí striktně slabým řazením prvků.





ForwardIterator dolní_mez ( Nejprve ForwardIterator , ForwardIterator jako poslední , konst T & val , Porovnat komp ) ;

Parametry

Metoda lower_bound() v C++ přebírá tři parametry.

První poslední: První dva parametry, „first“ a „last“, určují rozsah [first, last), ve kterém metoda hledá spodní mez. Rozsah je určen dvěma parametry, a to „první“ a „poslední“. Rozsah zahrnuje všechny prvky mezi „prvním“ a „posledním“ iterátorem, ale nezahrnuje prvek, na který ukazuje „poslední“ iterátor.



val: Třetí parametr metody lower_bound() se nazývá „val“. Představuje hodnotu dolní meze, kterou je třeba nalézt ve specifikovaném rozsahu. Když je zavolána metoda lower_bound(), hledá první prvek v zadaném rozsahu kontejneru, který je větší nebo roven dané hodnotě „val“.

komp: Metoda lower_bound() může také přijmout binární porovnávací funkci jako svůj čtvrtý parametr. Vyžaduje dva argumenty: Typ, na který odkazuje ForwardIterator , a druhý je val . Funkce pak vrátí booleovskou hodnotu založenou na porovnání mezi dvěma argumenty. Argument comp nemění žádný ze svých argumentů a může to být pouze ukazatel funkce nebo objekt funkce.

Návratová hodnota

Lower_bound() vrací iterátor, který ukazuje na první prvek, který je větší nebo roven prvku val . Pokud jsou všechny prvky v určeném rozsahu kontejneru menší než zadaná hodnota val metoda Lower_bound() vrátí iterátor ukazující na poslední prvek v rozsahu, a pokud jsou všechny prvky větší než val , dává iterátor, který ukazuje na první prvek v rozsahu.

Příklad kódu

Tento kód C++ demonstruje použití funkce std::lower_bound() k nalezení prvního prvku v seřazeném vektoru, který není menší než daná hodnota.

#include

int hlavní ( )

{

// Vstupní vektor

std :: vektor < dvojnásobek > hodnoty { 10 , patnáct , dvacet , 25 , 30 } ;

// Tisk vektoru

std :: cout << 'Vektor obsahuje:' ;

pro ( nepodepsaný int i = 0 ; i < hodnoty. velikost ( ) ; i ++ )

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

std :: cout << ' \n ' ;

std :: vektor < dvojnásobek >:: iterátor to1 , to2 , to3 ;

// std :: dolní_mez

to1 = std :: dolní_mez ( hodnoty. začít ( ) , hodnoty. konec ( ) , 13 ) ;

to2 = std :: dolní_mez ( hodnoty. začít ( ) , hodnoty. konec ( ) , 23 ) ;

to3 = std :: dolní_mez ( hodnoty. začít ( ) , hodnoty. konec ( ) , 33 ) ;

std :: cout

<< ' \n dolní_mez pro prvek 13 na pozici: '

<< ( to1 - hodnoty. začít ( ) ) ;

std :: cout

<< ' \n dolní_mez pro prvek 23 na pozici: '

<< ( to2 - hodnoty. začít ( ) ) ;

std :: cout

<< ' \n dolní_mez pro prvek 33 na pozici: '

<< ( to3 - hodnoty. začít ( ) ) ;

vrátit se 0 ;

}

Kód začíná definováním std::vektoru hodnot typu s dvojitým názvem a jeho inicializací s některými hodnotami. Poté vytiskne prvky vektoru pomocí cyklu for.

Dále kód deklaruje tři proměnné std::vector::iterator s názvem it1, it2 a it3. Tyto proměnné budou použity k uložení výsledků volání std::lower_bound() ve vektoru hodnot s různými argumenty.

Funkce std::lower_bound() se volá se třemi různými hodnotami: 13, 23 a 33. Při každém volání poskytuje Lower_bound() iterátor, který ukazuje na první prvek ve vektoru, který je větší nebo roven specifikovaná hodnota.

Kód pak vytiskne pozice těchto prvků ve vektoru odečtením iterátoru values.begin() od iterátoru vráceného std::lower_bound(), který udává index prvku ve vektoru.

Výstup

Závěr

Metoda lower_bound() v C++ najde první výskyt dané hodnoty v seřazeném kontejneru. Je součástí knihovny v C++ a lze ji použít k provádění binárních prohledávání polí, vektorů a dalších tříděných kontejnerů. Metoda poskytuje iterátor, který ukazuje na první prvek v rozsahu, který není menší než daná hodnota. Přečtěte si více o metodě lower_bound() v tomto článku.