Wat is de lower_Bound()-methode in C++

Wat Is De Lower Bound Methode In C



De programmeertaal C++ biedt een breed scala aan functies en methoden die veel worden gebruikt. De methode lower_bound() is zo'n functie die wordt gebruikt om de eerste keer dat een bepaalde waarde voorkomt in een gesorteerde container te vinden. Dit artikel behandelt de syntaxis, parameters, geretourneerde waarden en een voorbeeldcode voor de methode lower_bound() in C++.

Wat is de methode lower_bound()?

De methode lower_bound() in C++ vindt de eerste keer dat een bepaalde waarde voorkomt in een gesorteerde container. Het maakt deel uit van de -bibliotheek in C++ en wordt gebruikt om binaire zoekopdrachten uit te voeren op arrays, vectoren en andere gesorteerde containers. De methode lower_bound() retourneert een iterator die verwijst naar het eerste element in een opgegeven bereik van een container, dat niet kleiner is dan de opgegeven waarde.

Syntaxis







De methode lower_bound() in C++ heeft twee variaties: een standaard en een aangepaste syntaxis.



Standaard syntaxis

De standaardsyntaxis bevat een ForwardIterator die verwijst naar respectievelijk de eerste en voorbij de laatste elementen in het bereik dat moet worden doorzocht, en een waarde om de elementen in het bereik te vergelijken.



ForwardIterator ondergrens ( ForwardIterator eerst , ForwardIterator laatste , const T & val ) ;

Aangepaste syntaxis

De aangepaste syntaxis neemt bovendien een door de gebruiker gedefinieerde binaire predikaatfunctie op die een strikt zwakke volgorde volgt om de elementen te ordenen.





ForwardIterator ondergrens ( ForwardIterator eerst , ForwardIterator laatste , const T & val , Comp. vergelijken ) ;

Parameters

De methode lower_bound() in C++ heeft drie parameters nodig.

Eerste Laatste: De eerste twee parameters, “eerste” en “laatste”, bepalen het bereik [eerste, laatste) waarbinnen de methode zoekt naar de ondergrens. Het bereik wordt gespecificeerd door twee parameters, namelijk 'eerste' en 'laatste'. Het bereik omvat alle elementen tussen de 'eerste' en 'laatste' iterator, maar sluit het element uit waarnaar de 'laatste' iterator verwijst.



waarde: De derde parameter van de methode lower_bound() wordt 'val' genoemd. Het vertegenwoordigt de waarde van de ondergrens die moet worden gevonden binnen het opgegeven bereik. Wanneer de methode lower_bound() wordt aangeroepen, zoekt deze naar het eerste element binnen het opgegeven bereik van een container dat groter is dan of gelijk is aan de gegeven waarde 'val'.

comp: De methode lower_bound() kan ook een binaire vergelijkingsfunctie als vierde parameter accepteren. Er zijn twee argumenten nodig: Het type waarnaar wordt verwezen door de ForwardIterator , en de tweede is val . De functie retourneert vervolgens een Booleaanse waarde op basis van een vergelijking tussen de twee argumenten. Het argument comp verandert niets aan zijn argumenten en het kan alleen een functieaanwijzer of een functieobject zijn.

Winstwaarde

De lower_bound() retourneert een iterator die wijst naar het eerste element dat groter is dan of gelijk is aan de val . Als alle elementen in het opgegeven bereik van een container kleiner zijn dan de opgegeven waarde val , retourneert de methode lower_bound() een iterator die naar het laatste element in het bereik wijst, en als alle elementen groter zijn dan val , geeft het een iterator die verwijst naar het eerste element in het bereik.

Voorbeeldcode

Deze C++-code demonstreert het gebruik van de functie std::lower_bound() om het eerste element in een gesorteerde vector te vinden dat niet kleiner is dan een bepaalde waarde.

#include

int voornaamst ( )

{

// Invoervector

soa :: vector < dubbele > waarden { 10 , vijftien , twintig , 25 , 30 } ;

// Vector afdrukken

soa :: cout << 'Vector bevat:' ;

voor ( ongetekend int i = 0 ; i < waarden. maat ( ) ; i ++ )

soa :: cout << ' ' << waarden [ i ] ;

soa :: cout << ' \N ' ;

soa :: vector < dubbele >:: iterator het1 , het2 , het3 ;

// std :: ondergrens

het1 = soa :: ondergrens ( waarden. beginnen ( ) , waarden. einde ( ) , 13 ) ;

het2 = soa :: ondergrens ( waarden. beginnen ( ) , waarden. einde ( ) , 23 ) ;

het3 = soa :: ondergrens ( waarden. beginnen ( ) , waarden. einde ( ) , 33 ) ;

soa :: cout

<< ' \N lower_bound voor element 13 op positie: '

<< ( het1 - waarden. beginnen ( ) ) ;

soa :: cout

<< ' \N lower_bound voor element 23 op positie: '

<< ( het2 - waarden. beginnen ( ) ) ;

soa :: cout

<< ' \N lower_bound voor element 33 op positie: '

<< ( het3 - waarden. beginnen ( ) ) ;

opbrengst 0 ;

}

De code begint met het definiëren van een std::vector van het type waarden met dubbele naam en initialiseert deze met enkele waarden. Vervolgens worden de elementen van de vector afgedrukt met behulp van een for-lus.

Vervolgens declareert de code drie std::vector::iteratorvariabelen genaamd it1, it2 en it3. Deze variabelen worden gebruikt om de resultaten op te slaan van het aanroepen van std::lower_bound() op de waardevector met verschillende argumenten.

De functie std::lower_bound() wordt aangeroepen met drie verschillende waarden: 13, 23 en 33. Bij elke aanroep geeft de lower_bound() een iterator die wijst naar het eerste element in de vector dat groter is dan of gelijk is aan de gespecificeerde waarde.

De code drukt vervolgens de posities van deze elementen in de vector af door de iterator waarden.begin() af te trekken van de iterator die wordt geretourneerd door std::lower_bound(), wat de index van het element in de vector geeft.

Uitgang

Conclusie

De methode lower_bound() in C++ vindt de eerste keer dat een bepaalde waarde voorkomt in een gesorteerde container. Het maakt deel uit van de -bibliotheek in C++ en kan worden gebruikt om binaire zoekopdrachten uit te voeren op arrays, vectoren en andere gesorteerde containers. De methode geeft een iterator die wijst naar het eerste element in een bereik dat niet kleiner is dan de opgegeven waarde. Lees meer over de methode lower_bound() in dit artikel.