De functie Upper_bound() gebruiken in C++

De Functie Upper Bound Gebruiken In C



Met de programmeertaal C++ kan een verscheidenheid aan programma's worden gemaakt, waaronder games, grafische afbeeldingen, webservers en meer. Soms moeten we echter bepaalde bewerkingen uitvoeren op de gegevens in onze programma's, zoals zoeken, sorteren of het vinden van de maximale of minimale waarde uit een reeks elementen. Een van de functies die kunnen worden gebruikt om de bovengrens van een waarde in een gesorteerd bereik van elementen te vinden, is upper_bound().

Wat is de upper_bound()-functie in C++

De functie upper_bound() in C++ is een functie die een gesorteerde reeks elementen en een waarde als argumenten gebruikt en een iterator retourneert die verwijst naar het eerste element in het bereik dat groter is dan de waarde.







Er zijn twee verschillende soorten argumenten:



num bovengrens ( op een. Eerst , op een. laatst , waarde )

Iterators die het bereik van de te onderzoeken elementen specificeren, zijn de eerste en de laatste. Het gebruikte interval omvat alle elementen vanaf het eerste element tot het einde, maar omvat niet het element dat als laatste wordt aangegeven. Waarde is de waarde waarmee de elementen worden vergeleken.



num bovengrens ( op een. Eerst , op een. laatst ,  waarde, vergelijk comp )

In dit geval produceert de binaire functie comp een waarde die kan worden geconverteerd naar een bool en accepteert twee parameters van hetzelfde type als de items in het bereik. Als een bepaalde voorwaarde voorschrijft dat het eerste argument niet hoger is dan het tweede, moet de functie het resultaat true retourneren en als dat niet het geval is, moet deze false retourneren.





Hoe de functie upper_bound() te gebruiken in C++

De functie upper_bound() kan worden gebruikt om de bovengrens van een waarde in een gesorteerd bereik van elementen in verschillende situaties te vinden. We kunnen het bijvoorbeeld gebruiken om de positie van een element in een gesorteerde array of vector te vinden, of om het volgende grotere element in een set of kaart te vinden. Hier zijn enkele voorbeelden van het gebruik van de functie upper_bound() in C++:

Voorbeeld 1: De functie upper_bound() gebruiken om de positie van een element in een gesorteerde array te vinden

Hier is een voorbeeld dat de functie upper_bound() gebruikt om de positie van een element in een gesorteerde reeks gehele getallen te vinden en deze op het scherm weer te geven:



#include

#include

gebruik makend van naamruimte soa ;

int voornaamst ( )

{

int reeks [ ] = { vijftien , 35 , Vier vijf , 55 , 65 } ;

int A = De grootte van ( reeks ) / De grootte van ( reeks [ 0 ] ) ;

uit << 'Matrix bevat: ' ;

voor ( int i = 0 ; i < A ; i ++ )

uit << reeks [ i ] << ' ' ;

uit << ' \N ' ;

int B = Vier vijf ; // declareer en initialiseer een waarde

int * P = bovengrens ( array, array + een, b ) ;

uit << 'Bovengrens van' << B << ' staat op positie: ' << ( P - reeks ) << ' \N ' ; // geef de positie weer met behulp van aanwijzerberekeningen

opbrengst 0 ;

}

Eerst definieert het programma de benodigde headerbestanden en array met getallen en gebruikt vervolgens de functie sizeof() om de grootte van de array te bepalen. Vervolgens wordt een for-lus gebruikt om de elementen van de array weer te geven en vervolgens wordt een geheel getal gedeclareerd waarvan de positie in de array wordt bepaald met behulp van de aanwijzer en wordt weergegeven in de uitvoer:

Voorbeeld 2: De functie upper_bound() gebruiken om het volgende grotere element in een set te vinden

Hier is een voorbeeldcode die de functie upper_bound() gebruikt om het volgende grotere element dan een gegeven waarde in een reeks gehele getallen te vinden en dit op het scherm weer te geven:

#include

#include

#include

gebruik makend van naamruimte soa ;

int voornaamst ( )

{

set < int > op een = { vijftien , 25 , 35 , Vier vijf , 55 } ; // declareer en initialiseer een reeks gehele getallen

uit << 'Gegeven cijfers:' ;

voor ( auto A : op een ) // geef de set-elementen weer met behulp van een op bereik gebaseerde for-lus

uit << A << ' ' ;

uit << ' \N ' ;

int A = Vier vijf ; // declareer en initialiseer een waarde

auto Het = bovengrens ( op een. beginnen ( ) , op een. einde ( ) , A ) ; // vind de bovengrens van x in de set met behulp van upper_bound()

als ( Het ! = op een. einde ( ) ) // controleer of de iterator geldig is

uit << 'Het volgende hogere getal dan' << A << ' is ' << * Het << ' \N ' ; // geef het element weer met de dereferentie-operator

anders

uit << 'Er is geen hoger getal dan' << A << ' \N ' ; // geef een bericht weer als een dergelijk element niet wordt gevonden

opbrengst 0 ;

}

Eerst definieert de code de benodigde headerbestanden en vervolgens wordt een vector van vijf elementen gedefinieerd. Vervolgens wordt de vector weergegeven met het trefwoord auto, omdat deze automatisch het gegevenstype van de elementen kan instellen. Vervolgens wordt een variabele met een waarde van 45 gedeclareerd, die vervolgens wordt vergeleken met de vector die is gedefinieerd met behulp van de functie upper_bound() en daarna het vergelijkingsresultaat weergeeft:

Conclusie

De functie upper_bound() is een functie die een iterator retourneert die verwijst naar het eerste element in een gesorteerd bereik dat groter is dan een gegeven waarde. Als u het eerste getal wilt vinden in een interval dat groter is dan of gelijk is aan een opgegeven getal, gebruikt u de functie upper_bound() in C++. Dit kan handig zijn voor taken zoals het vinden van het eerstvolgende hoogste getal in een lijst of het vinden van het eerste element in een gesorteerde array dat groter is dan een bepaalde drempelwaarde.