Pomocou programovacieho jazyka C++ je možné vytvoriť rôzne programy vrátane hier, grafiky, webových serverov a ďalších. Niekedy však možno budeme musieť vykonať nejaké operácie s údajmi v našich programoch, ako je vyhľadávanie, triedenie alebo nájdenie maximálnej alebo minimálnej hodnoty medzi radom prvkov. Jednou z funkcií, ktoré možno použiť na nájdenie hornej hranice hodnoty v zoradenom rozsahu prvkov, je horná hranica ().
Čo je funkcia upper_bound() v C++
Funkcia upper_bound() v C++ je funkcia, ktorá berie zoradený rozsah prvkov a hodnotu ako argumenty a vracia iterátor ukazujúci na prvý prvok v rozsahu, ktorý je väčší ako hodnota.
Má dva rôzne typy argumentov:
num horna_medza ( na jeden. najprv , na jeden. posledný , hodnota )
Iterátory, ktoré špecifikujú rozsah prvkov, ktoré sa majú preskúmať, sú prvé a posledné. Použitý interval obsahuje všetky prvky od prvého prvku až po koniec, ale nezahŕňa prvok označený posledným. Hodnota je hodnota, s ktorou sa majú porovnávať prvky.
num horna_medza ( na jeden. najprv , na jeden. posledný , hodnota, porovnanie komp )
V tomto prípade binárna funkcia comp vytvorí hodnotu, ktorú možno previesť na bool a akceptuje dva parametre rovnakého typu ako položky rozsahu. Ak určitá podmienka určuje, že prvý argument nie je vyšší ako druhý, funkcia musí vrátiť pravdivý výsledok a ak nie, mala by vrátiť nepravdu.
Ako používať funkciu upper_bound() v C++
Funkciu upper_bound() možno použiť na nájdenie hornej hranice hodnoty v zoradenom rozsahu prvkov v rôznych situáciách. Môžeme ho použiť napríklad na nájdenie polohy prvku v zoradenom poli alebo vektore alebo na nájdenie ďalšieho väčšieho prvku v množine alebo mape. Tu je niekoľko príkladov, ako používať funkciu upper_bound() v C++:
Príklad 1: Použitie funkcie upper_bound() na nájdenie pozície prvku v triedenom poli
Tu je príklad, ktorý používa funkciu upper_bound() na nájdenie pozície prvku v zoradenom poli celých čísel a jej zobrazenie na obrazovke:
#include
#include
použitím menný priestor std ;
int Hlavná ( )
{
int pole [ ] = { pätnásť , 35 , Štyri, päť , 55 , 65 } ;
int a = veľkosť ( pole ) / veľkosť ( pole [ 0 ] ) ;
cout << 'Pole obsahuje: ' ;
pre ( int i = 0 ; i < a ; i ++ )
cout << pole [ i ] << '' ;
cout << ' \n ' ;
int b = Štyri, päť ; // deklaruje a inicializuje hodnotu
int * p = Horná hranica ( pole, pole + a, b ) ;
cout << 'Horná hranica' << b << 'je na pozícii:' << ( p - pole ) << ' \n ' ; // zobrazenie pozície pomocou aritmetiky ukazovateľa
vrátiť 0 ;
}
Najprv program definuje potrebné hlavičkové súbory a pole obsahujúce čísla a potom použije funkciu sizeof() na získanie veľkosti poľa. Ďalej sa na zobrazenie prvkov poľa použije cyklus for a potom sa deklaruje celé číslo, ktorého poloha v poli sa určí pomocou ukazovateľa a zobrazí sa vo výstupe:
Príklad 2: Použitie funkcie upper_bound() na nájdenie ďalšieho väčšieho prvku v množine
Tu je príklad kódu, ktorý používa funkciu upper_bound() na nájdenie ďalšieho väčšieho prvku ako je daná hodnota v množine celých čísel a jeho zobrazenie na obrazovke:
#include#include
#include
použitím menný priestor std ;
int Hlavná ( )
{
nastaviť < int > na jeden = { pätnásť , 25 , 35 , Štyri, päť , 55 } ; // deklaruje a inicializuje množinu celých čísel
cout << 'Dané čísla: ' ;
pre ( auto a : na jeden ) // zobrazenie prvkov sady pomocou cyklu for založeného na rozsahu
cout << a << '' ;
cout << ' \n ' ;
int a = Štyri, päť ; // deklaruje a inicializuje hodnotu
auto to = Horná hranica ( na jeden. začať ( ) , na jeden. koniec ( ) , a ) ; // nájdite hornú hranicu x v množine pomocou upper_bound()
ak ( to ! = na jeden. koniec ( ) ) // skontrolujte, či je iterátor platný
cout << 'Ďalšie vyššie číslo ako' << a << ' je ' << * to << ' \n ' ; // zobrazenie prvku pomocou operátora dereference
inak
cout << 'Neexistuje vyššie číslo ako' << a << ' \n ' ; // zobrazí správu, ak sa takýto prvok nenájde
vrátiť 0 ;
}
Najprv kód definuje potrebné hlavičkové súbory a potom sa definuje vektor piatich prvkov, potom sa vektor zobrazí pomocou kľúčového slova auto, pretože dokáže automaticky nastaviť dátový typ prvkov. Ďalej je deklarovaná premenná s hodnotou 45, ktorá je potom porovnaná s vektorom definovaným pomocou funkcie upper_bound() a následne zobrazuje výsledok porovnania:
Záver
Funkcia upper_bound() je funkcia, ktorá vracia iterátor ukazujúci na prvý prvok v zoradenom rozsahu, ktorý je väčší ako daná hodnota. Ak chcete nájsť prvé číslo v intervale, ktorý je väčší alebo rovný zadanému číslu, použite funkciu upper_bound() v C++. To môže byť užitočné pri úlohách, ako je nájdenie ďalšieho najvyššieho čísla v zozname alebo nájdenie prvého prvku v zoradenom poli, ktorý je väčší ako daný prah.