Pomocí programovacího jazyka C++ lze vytvářet různé programy, včetně her, grafiky, webových serverů a dalších. Někdy však můžeme potřebovat provést některé operace s daty v našich programech, jako je vyhledávání, řazení nebo nalezení maximální nebo minimální hodnoty mezi řadou prvků. Jednou z funkcí, kterou lze použít k nalezení horní hranice hodnoty v seřazeném rozsahu prvků, je horní_mez().
Co je funkce upper_bound() v C++
Funkce upper_bound() v C++ je funkce, která přebírá seřazený rozsah prvků a hodnotu jako argumenty a vrací iterátor ukazující na první prvek v rozsahu, který je větší než hodnota.
Má dva různé typy argumentů:
číslo horní_mez ( na jednom. První , na jednom. poslední , hodnota )
Iterátory, které specifikují rozsah prvků, které mají být zkoumány, jsou první a poslední. Použitý interval obsahuje všechny prvky od prvního prvku až po konec, ale nezahrnuje prvek označený posledním. Hodnota je hodnota, se kterou se mají prvky porovnávat.
číslo horní_mez ( na jednom. První , na jednom. poslední , hodnota, porovnání komp )
V tomto případě binární funkce comp vytváří hodnotu, kterou lze převést na bool a přijímá dva parametry stejného typu jako položky rozsahu. Pokud určitá podmínka určuje, že první argument není vyšší než druhý, funkce musí vrátit výsledek true a pokud ne, měla by vrátit hodnotu false.
Jak používat funkci upper_bound() v C++
Funkci upper_bound() lze použít k nalezení horní hranice hodnoty v seřazeném rozsahu prvků v různých situacích. Můžeme jej například použít k nalezení pozice prvku v seřazeném poli nebo vektoru nebo k nalezení dalšího většího prvku v množině nebo mapě. Zde je několik příkladů, jak používat funkci upper_bound() v C++:
Příklad 1: Použití funkce upper_bound() k nalezení pozice prvku v seřazeném poli
Zde je příklad, který používá funkci upper_bound() k nalezení pozice prvku v seřazeném poli celých čísel a jeho zobrazení na obrazovce:
#include
#include
použitím jmenný prostor std ;
int hlavní ( )
{
int pole [ ] = { patnáct , 35 , Čtyři pět , 55 , 65 } ;
int A = velikost ( pole ) / velikost ( pole [ 0 ] ) ;
cout << 'Pole obsahuje: ' ;
pro ( int i = 0 ; i < A ; i ++ )
cout << pole [ i ] << '' ;
cout << ' \n ' ;
int b = Čtyři pět ; // deklarovat a inicializovat hodnotu
int * p = horní hranice ( pole, pole + a, b ) ;
cout << 'Horní hranice' << b << 'je na pozici:' << ( p - pole ) << ' \n ' ; // zobrazení pozice pomocí aritmetiky ukazatele
vrátit se 0 ;
}
Nejprve program definuje potřebné hlavičkové soubory a pole obsahující čísla a poté použije funkci sizeof() k získání velikosti pole. Dále se použije cyklus for k zobrazení prvků pole a poté je deklarováno celé číslo, jehož pozice v poli je určena pomocí ukazatele a je zobrazena ve výstupu:
Příklad 2: Použití funkce upper_bound() k nalezení dalšího většího prvku v sadě
Zde je příklad kódu, který používá funkci upper_bound() k vyhledání dalšího většího prvku než je daná hodnota v sadě celých čísel a jeho zobrazení na obrazovce:
#include#include
#include
použitím jmenný prostor std ;
int hlavní ( )
{
soubor < int > na jednom = { patnáct , 25 , 35 , Čtyři pět , 55 } ; // deklaruje a inicializuje sadu celých čísel
cout << 'Daná čísla:' ;
pro ( auto A : na jednom ) // zobrazení prvků sady pomocí cyklu for založeného na rozsahu
cout << A << '' ;
cout << ' \n ' ;
int A = Čtyři pět ; // deklarovat a inicializovat hodnotu
auto to = horní hranice ( na jednom. začít ( ) , na jednom. konec ( ) , a ) ; // najít horní hranici x v množině pomocí upper_bound()
-li ( to ! = na jednom. konec ( ) ) // kontrola, zda je iterátor platný
cout << 'Další vyšší číslo než' << A << ' je ' << * to << ' \n ' ; // zobrazení prvku pomocí operátoru dereference
jiný
cout << 'Neexistuje vyšší číslo než' << A << ' \n ' ; // zobrazí zprávu, pokud žádný takový prvek není nalezen
vrátit se 0 ;
}
Nejprve kód definuje potřebné hlavičkové soubory a poté se definuje vektor pěti prvků, dále se vektor zobrazí pomocí klíčového slova auto, protože dokáže automaticky nastavit datový typ prvků. Dále je deklarována proměnná s hodnotou 45, která je poté porovnána s vektorem definovaným pomocí funkce upper_bound() a poté zobrazí výsledek porovnání:
Závěr
Funkce upper_bound() je funkce, která vrací iterátor ukazující na první prvek v seřazeném rozsahu, který je větší než daná hodnota. Chcete-li najít první číslo v intervalu, který je větší nebo roven zadanému číslu, použijte funkci upper_bound() v C++. To může být užitečné pro úkoly, jako je hledání dalšího nejvyššího čísla v seznamu nebo hledání prvního prvku v seřazeném poli, který je větší než daná prahová hodnota.