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

Maksud fungsi Lambda dalam C/C++

WBOY
Lepaskan: 2023-09-02 19:33:08
ke hadapan
1473 orang telah melayarinya

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 ;};
Salin selepas log masuk

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;
   }
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
};
Salin selepas log masuk

Atas ialah kandungan terperinci Maksud fungsi Lambda dalam C/C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan