lambdas c with examples
Naučte se vše o výrazu Lambda v jazyce C ++ jednoduše.
jak používat torrentový soubor
Výraz Lambda je nejnovější koncept v C ++, který byl představen od C ++ 11 a dále.
V tomto tutoriálu se dozvíme o lambdách v C ++. Budeme také diskutovat o tom, jak mohou být lambdy definovány a použity v programu.
=> Podívejte se na kompletní sérii školení C ++ zde.
Co se naučíte:
Výrazy / funkce lambda
Lambdas, jak se běžně nazývají, jsou v zásadě malé vložené úryvky kódu, které lze použít uvnitř funkcí nebo dokonce příkazů volání funkcí. Nejsou pojmenovány ani znovu použity.
Lambdy můžeme prohlásit za „automatické“ a použít je kdekoli v programu.
Jak používat / psát lambdy?
Obecná syntaxe definování lambdas je následující:
(Capture clause) (parameter_list) mutable exception ->return_type { Method definition; }
Zachyťte uzavření : Zavaděč lambda podle specifikace C ++.
Seznam parametrů : Nazývá se také jako deklarace lambda. Je volitelný a je podobný seznamu parametrů metody.
Proměnlivý : Volitelné. Umožňuje úpravy proměnných zachycených voláním podle hodnoty.
výjimka : Specifikace výjimky. Volitelný. Použijte „noexcept“ k označení, že lambda nevyvolá výjimku.
Návratový_typ : Volitelné. Kompilátor sám odvodí návratový typ výrazu. Ale jak se lambdy stávají složitějšími, je lepší zahrnout návratový typ, protože kompilátor nemusí být schopen odvodit návratový typ.
Definice metody : Lambda tělo.
Klauzule zachycení definice lambda se používá k určení, které proměnné jsou zachyceny a zda jsou zachyceny odkazem nebo hodnotou.
Prázdný uzávěr zachycení () označuje, že lambda nepoužívá žádné proměnné, což znamená, že má přístup pouze k proměnným, které jsou pro něj lokální.
Režim „snímání - výchozí“ označuje, jak snímat mimo proměnné, na které odkazuje Lambda:
- Uzávěr zachycení (&) znamená, že proměnné jsou zachyceny odkazem.
- Uzávěr zachycení (=) označuje, že proměnné jsou zachyceny podle hodnoty.
Pokud máme klauzuli o zachycení-výchozí a klauzuli o zachycení, pak nemůžeme mít identifikátor v zachycení konkrétního zachycení může mít identifikátor &. Podobně, pokud klauzule pro zachycení obsahuje capture-default =, pak klauzule pro zachycení nemůže mít identifikátor form =. Identifikátor nebo „toto“ se také v klauzuli o zachycení nemůže objevit více než jednou.
To by mělo být jasné z následujících příkladů.
(&sum, sum_var) //OK, explicitly specified capture by value (sum_var, &sum) //ok, explicitly specified capture by reference (&, &sum_var) // error, & is the default still sum_var preceded by & (i, i) //error, i is used more than once
Zde jsou proměnné, které mají být zachyceny a použity v lambda, sum, sum_var a já.
Oracle pl sql rozhovor otázky pro zkušené
Níže je uveden základní příklad výrazu lambda v C ++.
#include #include using namespace std; int main() { auto sum = ()(int a, int b) { return a + b; }; cout <<'Sum of two integers:'<< sum(5, 6) << endl; return 0; }
Výstup:
Součet dvou celých čísel: 11
Zde máme vložený výraz lambda pro výpočet součtu dvou hodnot. Typ hodnot a a b jsme zadali jako celá čísla.
Jeden problém s výše uvedeným kódem je, že funguje pouze pro celá čísla. Pokud později v programu chceme přidat dvě zdvojnásobení nebo řetězce nebo jiné typy, budeme muset mít těch mnoho lambd. Toto není efektivní způsob programování.
jak vytvořit falešný e-mail
Tento problém můžeme překonat pomocí parametrů šablony. Díky tomu jsou lambdy zobecněné pro všechny datové typy. To se děje od C ++ 14 a dále.
Výše uvedený program bude tedy upraven následovně:
#include #include using namespace std; int main() { // generalized lambda auto sum = ()(auto a, auto b) { return a + b; }; cout <<'Sum(5,6) = '<< sum(5, 6) << endl; // sum of two integers cout <<'Sum(2.0,6.5) = '< Výstup:
Součet (5,6) = 11
Součet (2,0,6,5) = 8,5
Součet ((řetězec („SoftwareTesting“), řetězec („help.com“)) = SoftwareTestinghelp.com
V tomto programu jsme tedy použili obecný lambda součet, který lze použít k nalezení součtu dvou objektů libovolného typu. Všimněte si, že jsme použili klíčové slovo „auto“ k označení, že datový typ parametru bude odvozen na základě dat.
Abychom demonstrovali použití této lambdy, použili jsme ji se třemi různými datovými typy, int, float a string. Z výstupu víme, že podle typu dat se provádí součtová operace. Například, když dodáme parametry řetězce do součtu lambda, zřetězí dva řetězce.
Závěr
Přišli jsme na konec tohoto kurzu o výrazech lambda v C ++. Toto je nejnovější koncept v C ++ a může být velmi užitečný, když potřebujeme provést malý fragment kódu inline. Lambdas lze také učinit obecnými a použít pro všechny datové typy.
V našem nadcházejícím tutoriálu budeme diskutovat o některých dalších tématech v C ++, jako je čas, standardní vstup / výstup a protokolování.
=> Přečtěte si zde populární sérii školení C ++.
Doporučené čtení
- Co je srovnávací testování (naučit se s příklady)
- Výukový program Python DateTime s příklady
- Vyjmout příkaz v Unixu s příklady
- Syntaxe příkazů Unix Cat, možnosti s příklady
- Použití kurzoru v MongoDB s příklady
- Příkaz LS v Unixu s příklady
- Funkce data a času v C ++ s příklady
- Metoda MongoDB Sort () s příklady