Fungsi Lambda - Fungsi Lambda ialah fungsi sebaris yang tidak memerlukan sebarang pelaksanaan di luar skop program utama.
Fungsi Lambda juga boleh digunakan sebagai nilai pembolehubah untuk disimpan. Lambdas boleh dipanggil objek (dipanggil functors) yang boleh dipanggil oleh fungsi.
Setiap kali pengkompil menemui definisi fungsi lambda, ia biasanya mencipta objek lambda tersuai.
Fungsi lambda mempunyai lebih banyak ciri daripada fungsi biasa, contohnya, ia mempunyai kaedah tangkapan untuk menangkap pembolehubah yang digunakan. Walau bagaimanapun, pembolehubah yang ditangkap dianggap sebagai ahli objek.
Kadangkala fungsi lambda juga dipanggil "objek fungsi", ia mempunyai skopnya sendiri dan boleh diluluskan sebagai parameter di dalam fungsi biasa. Fungsi. Fungsi Lambda mempunyai kitaran hayatnya sendiri.
[ ] - Tangkap
( ) - Parameter (pilihan)
→ - Nilai pulangan (pilihan)
-{...} Badan Fungsi
[ ]( int a) -> int { return a-1 ;};
Capture – Tangkap ialah klausa yang melaluinya fungsi lambda boleh mengakses pembolehubah yang tersedia dalam skop tertentu atau blok bersarang.
Kita boleh menangkap nilai tertentu dengan menggunakan dua kaedah untuk mendapatkan pembolehubah yang tersedia:
Menangkap objek dengan nama – Menangkap objek mengikut nama menjana salinan tempatan objek menggunakan fungsi lambda.
Kita boleh memahami konsep ini dengan contoh berikut -
int main(){ set s; //Adding the elements to set int i=20; for_each(s.begin(),s.end(), [i](T& elem){ cout<<elem.getVal()*i<<endl; } }
Dalam contoh di atas, nilai ditangkap dengan mencipta salinan tempatan fungsi lambda.
Merakam objek melalui rujukan – Menangkap objek melalui rujukan membolehkan anda memanipulasi konteks fungsi lambda. Oleh itu, nilai yang ditangkap oleh objek fungsi atau fungsi lambda boleh berubah.
Kita boleh memahami perkara ini dengan contoh berikut -
int main(){ sets; //Adding elements to the set int result=0; for_each(s.begin(),s.end(), [&result](&T elem){ result+= elem.getVal();}); cout<<result<<endl; }
Kita tahu bahawa fungsi lambda boleh digunakan sebagai parameter di dalam mana-mana fungsi biasa. Contohnya,
class func{ public: func(set<T>s): s1(s){} void func(){ remove_if(s1.begin(),s1.end(), [this](int i) ->bool {return (i<level);}); } private: set<T>s1; int result; };
Atas ialah kandungan terperinci Maksud fungsi Lambda dalam C/C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!