Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Maksud fungsi Lambda dalam C/C++

Maksud fungsi Lambda dalam C/C++

WBOY
WBOYke hadapan
2023-09-02 19:33:081428semak imbas

Maksud fungsi Lambda dalam C/C++

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

Sintaks lambda

[ ]( 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;
}

Lambda dalam fungsi ahli

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam