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
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.
#includeint 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
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