Vad är metoden lower_Bound() i C++

Vad Ar Metoden Lower Bound I C



Programmeringsspråket C++ erbjuder ett brett utbud av funktioner och metoder som används flitigt. Metoden lower_bound() är en sådan funktion som används för att hitta den första förekomsten av ett givet värde i en sorterad behållare. Den här artikeln täcker syntaxen, parametrarna, returvärdena och en exempelkod för metoden lower_bound() i C++.

Vad är metoden lower_bound()?

Metoden lower_bound() i C++ hittar den första förekomsten av ett givet värde i en sorterad behållare. Det är en del av -biblioteket i C++ och används för att utföra binära sökningar på arrayer, vektorer och andra sorterade behållare. Metoden lower_bound() returnerar en iterator som pekar på det första elementet i ett specificerat intervall för en behållare, vilket inte är mindre än det angivna värdet.

Syntax







Metoden lower_bound() i C++ har två varianter: en standardsyntax och en anpassad syntax.



Standardsyntax

Standardsyntaxen tar in en ForwardIterator som pekar på det första respektive förbi de sista elementen i intervallet som ska sökas, och ett värde för att jämföra elementen i intervallet.



ForwardIterator nedre_gräns ( ForwardIterator först , ForwardIterator sist , konst T & val ) ;

Anpassad syntax

Den anpassade syntaxen tar dessutom in en användardefinierad binär predikatfunktion som följer strikt svag ordning för att ordna elementen.





ForwardIterator nedre_gräns ( ForwardIterator först , ForwardIterator sist , konst T & val , Jämför komp ) ;

Parametrar

Metoden lower_bound() i C++ tar tre parametrar.

Först, sist: De två första parametrarna, 'första' och 'sista', bestämmer intervallet [första, sista) inom vilket metoden söker efter den nedre gränsen. Området specificeras av två parametrar, nämligen 'första' och 'sista'. Området inkluderar alla element mellan 'första' och 'sista' iteratorn men exkluderar elementet som pekas på av 'sista' iteratorn.



val: Den tredje parametern i metoden lower_bound() hänvisas till som 'val'. Det representerar värdet på den nedre gränsen som måste hittas inom det angivna intervallet. När metoden lower_bound() anropas söker den efter det första elementet inom det angivna intervallet för en behållare som är större än eller lika med det givna värdet 'val'.

komp: Metoden lower_bound() kan också acceptera en binär jämförelsefunktion som sin fjärde parameter. Det krävs två argument: Typen som pekas av ForwardIterator , och den andra är val . Funktionen returnerar sedan ett booleskt värde baserat på en jämförelse mellan de två argumenten. Argumentet comp ändrar inte några av dess argument och det kan bara vara en funktionspekare eller ett funktionsobjekt.

Returvärde

Lower_bound() returnerar en iterator som pekar mot det första elementet som är större än eller lika med val . Om alla element i det angivna intervallet för en behållare är mindre än det angivna värdet val , returnerar metoden lower_bound() en iterator som pekar på det sista elementet i intervallet, och om alla element är större än val , ger det en iterator som pekar på det första elementet i intervallet.

Exempelkod

Denna C++-kod demonstrerar användningen av std::lower_bound()-funktionen för att hitta det första elementet i en sorterad vektor som inte är mindre än ett givet värde.

#include

int huvud ( )

{

// Ingångsvektor

std :: vektor < dubbel > värden { 10 , femton , tjugo , 25 , 30 } ;

// Skriv ut vektor

std :: cout << 'Vektor innehåller:' ;

för ( osignerad int i = 0 ; i < värden. storlek ( ) ; i ++ )

std :: cout << ' ' << värden [ i ] ;

std :: cout << ' \n ' ;

std :: vektor < dubbel >:: iterator it1 , it2 , it3 ;

// std :: nedre_gräns

it1 = std :: nedre_gräns ( värden. Börja ( ) , värden. slutet ( ) , 13 ) ;

it2 = std :: nedre_gräns ( värden. Börja ( ) , värden. slutet ( ) , 23 ) ;

it3 = std :: nedre_gräns ( värden. Börja ( ) , värden. slutet ( ) , 33 ) ;

std :: cout

<< ' \n nedre_gräns för element 13 vid position: '

<< ( it1 - värden. Börja ( ) ) ;

std :: cout

<< ' \n nedre_gräns för element 23 vid position: '

<< ( it2 - värden. Börja ( ) ) ;

std :: cout

<< ' \n nedre_gräns för element 33 vid position: '

<< ( it3 - värden. Börja ( ) ) ;

lämna tillbaka 0 ;

}

Koden börjar med att definiera en std::vektor av typen dubbelnamnvärden och initialisera den med några värden. Den skriver sedan ut elementen i vektorn med hjälp av en for-loop.

Därefter deklarerar koden tre std::vector::iteratorvariabler med namnet it1, it2 och it3. Dessa variabler kommer att användas för att lagra resultaten av anropet std::lower_bound() på värdevektorn med olika argument.

Funktionen std::lower_bound() anropas med tre olika värden: 13, 23 och 33. Vid varje anrop ger lower_bound() en iterator som pekar mot det första elementet i vektorn som är större än eller lika med angivet värde.

Koden skriver sedan ut positionerna för dessa element i vektorn genom att subtrahera iteratorn values.begin() från iteratorn som returneras av std::lower_bound(), vilket ger indexet för elementet i vektorn.

Produktion

Slutsats

Metoden lower_bound() i C++ hittar den första förekomsten av ett givet värde i en sorterad behållare. Det är en del av -biblioteket i C++ och kan användas för att utföra binära sökningar på arrayer, vektorer och andra sorterade behållare. Metoden ger en iterator som pekar mot det första elementet i ett intervall som inte är mindre än det givna värdet. Läs mer om metoden lower_bound() i den här artikeln.