lambdas c with examples
Leer alles over Lambda Expression in C ++ in eenvoudige bewoordingen.
welke mp4 video-downloader compatibel is met youtube
Lambda-expressie is het nieuwste concept in C ++ dat werd geïntroduceerd vanaf C ++ 11.
In deze tutorial zullen we leren over lambda's in C ++. We zullen ook bespreken hoe lambda's kunnen worden gedefinieerd en gebruikt in het programma.
Bekijk hier de complete C ++ trainingsserie.
Wat je leert:
- Lambda-expressies / -functies
- Hoe Lambdas te gebruiken / schrijven?
- Gevolgtrekking
- Aanbevolen literatuur
Lambda-expressies / -functies
Lambdas, zoals ze gewoonlijk worden genoemd, zijn in feite kleine inline codefragmenten die kunnen worden gebruikt in functies of zelfs functie-aanroepinstructies. Ze worden niet benoemd of hergebruikt.
We kunnen lambda's als 'auto' declareren en ze overal in het programma gebruiken.
Hoe Lambdas te gebruiken / schrijven?
De algemene syntaxis voor het definiëren van lambda's is als volgt:
Capture sluiting : Lambda-introducer volgens C ++ specificatie.
Parameterlijst : Ook wel lambda-declaraties genoemd. Is optioneel en lijkt op de parameterlijst van een methode.
Veranderlijk : Optioneel. Hiermee kunnen variabelen die zijn vastgelegd door een aanroep op waarde, worden gewijzigd.
uitzondering : Uitzonderingsspecificatie. Optioneel. Gebruik 'noexcept' om aan te geven dat lambda geen uitzondering genereert.
Return_type : Optioneel. De compiler leidt zelf het retourtype van de uitdrukking af. Maar naarmate lambda's complexer worden, is het beter om het retourtype op te nemen, omdat de compiler het retourtype mogelijk niet kan afleiden.
Methode definitie : Lambda carrosserie.
hoe mkv-bestand op Windows te openen
Een capture-clausule van lambda-definitie wordt gebruikt om te specificeren welke variabelen worden vastgelegd en of ze worden vastgelegd door middel van referentie of op waarde.
Een lege capture-sluiting (), geeft aan dat er geen variabelen worden gebruikt door lambda, wat betekent dat het alleen toegang heeft tot variabelen die er lokaal voor zijn.
De 'capture-default' -modus geeft aan hoe u kunt vastleggen buiten de variabelen waarnaar in Lambda wordt verwezen:
- De capture-sluiting (&) betekent dat de variabelen worden vastgelegd door middel van referentie.
- De capture-afsluiting (=) geeft aan dat de variabelen op waarde worden vastgelegd.
Als we een capture-default & een capture-clausule hebben, dan kunnen we geen identifier hebben in de capture van die specifieke capture, kan de & identifier hebben. Evenzo, als de capture-clausule capture-default = bevat, kan de capture-clausule niet de form = identifier hebben. Ook kan een identifier of ‘dit’ niet meer dan één keer voorkomen in de capture-clausule.
Dit moet duidelijk worden uit de volgende voorbeelden.
Hier zijn sum, sum_var en I de variabelen die moeten worden vastgelegd en gebruikt in lambda.
Hieronder vindt u een eenvoudig voorbeeld van een Lambda-expressie in C ++.
Uitgang:
Som van twee gehele getallen: 11
Hier hebben we een inline lambda-uitdrukking om de som van twee waarden te berekenen. We hebben het type waarden a en b gespecificeerd als gehele getallen.
Een probleem met de bovenstaande code is dat deze alleen werkt voor gehele getallen. Als we later in het programma twee dubbels of strings of andere typen willen toevoegen, zullen we die vele lambda's nodig hebben. Dit is geen efficiënte manier van programmeren.
wat is mijn internetbeveiligingssleutel
We kunnen dit probleem oplossen door sjabloonparameters te gebruiken. Dit maakt lambda's gegeneraliseerd voor alle gegevenstypen. Dit wordt gedaan vanaf C ++ 14.
Dus het bovenstaande programma wordt als volgt aangepast:
Uitgang:
Som (5,6) = 11
Som (2,0,6,5) = 8,5
Sum ((string ('SoftwareTesting'), string ('help.com')) = SoftwareTestinghelp.com
Daarom hebben we in dit programma een generieke lambda-som gebruikt, die kan worden gebruikt om de som van de twee objecten van elk type te vinden. Houd er rekening mee dat we het trefwoord ‘auto’ hebben gebruikt om aan te geven dat het gegevenstype van de parameter wordt afgeleid op basis van de gegevens.
Om het gebruik van deze lambda te demonstreren, hebben we deze gebruikt met drie verschillende gegevenstypen, int, float en string. Uit de uitvoer weten we dat volgens het type gegevens een sombewerking wordt uitgevoerd. Bijvoorbeeld, wanneer we stringparameters aan lambda sum leveren, voegt het de twee strings samen.
Gevolgtrekking
We zijn aan het einde gekomen van deze tutorial over lambda-expressies in C ++. Dit is het nieuwste concept in C ++ en kan erg handig zijn als we een klein stukje code inline moeten uitvoeren. Lambda's kunnen ook generiek worden gemaakt en voor alle gegevenstypen worden gebruikt.
In onze aanstaande tutorial zullen we enkele van de aanvullende onderwerpen in C ++ bespreken, zoals tijd, standaard invoer / uitvoer en logboekregistratie.
Lees hier de populaire C ++ trainingsserie.
Aanbevolen literatuur
- Wat is vergelijkingstesten (leren met voorbeelden)
- Python DateTime-zelfstudie met voorbeelden
- Knip Commando in Unix met voorbeelden
- Unix Cat Command Syntax, opties met voorbeelden
- Gebruik van Cursor in MongoDB met voorbeelden
- Ls Command in Unix met voorbeelden
- Datum- en tijdfuncties in C ++ met voorbeelden
- MongoDB Sort () -methode met voorbeelden