Fungsi Lambda ialah objek fungsi tanpa nama yang boleh mentakrifkan objek fungsi di dalam fungsi dengan cepat. Fungsi Lambda C++ telah diperkenalkan dalam standard C++11, yang boleh memudahkan penulisan kod dan meningkatkan kebolehbacaan dan kebolehselenggaraan program.
Sintaks fungsi Lambda adalah seperti berikut:
[capture list] (parameter list) -> return type { function body }
Antaranya, senarai tangkapan ialah senarai tangkapan fungsi Lambda, digunakan untuk menangkap senarai parameter luaran ialah senarai parameter, digunakan untuk menghantar parameter jenis; jenis pulangan, digunakan untuk menentukan nilai pulangan Jenis badan fungsi ialah badan fungsi, digunakan untuk melaksanakan operasi fungsi.
Berikut ialah contoh fungsi Lambda yang mudah:
auto add = [](int a, int b) -> int { return a + b; };
Dalam contoh di atas, fungsi Lambda menggunakan kata kunci auto untuk mentakrifkan tambah pembolehubah untuk menyimpan nilai pulangan fungsi Lambda. Fungsi Lambda menerima dua parameter a dan b dan mengembalikan jumlahnya. -> int menyatakan bahawa fungsi Lambda mengembalikan jenis integer.
Fungsi Lambda biasanya digunakan di mana objek fungsi perlu dilalui, seperti fungsi algoritma, bekas STL, dll. Berikut ialah beberapa senario aplikasi fungsi Lambda.
Fungsi algoritma dalam perpustakaan standard C++ biasanya menerima objek fungsi sebagai parameter untuk beroperasi pada elemen dalam bekas. Fungsi Lambda boleh dengan cepat menentukan objek fungsi sementara dalam fungsi algoritma.
Sebagai contoh, kod berikut menggunakan fungsi Lambda untuk melaksanakan fungsi algoritma std::for_each untuk melintasi bekas:
std::vector<int> vec = {1, 2, 3, 4, 5}; std::for_each(vec.begin(), vec.end(), [](int value) { std::cout << value << " "; });
Antaranya, fungsi Lambda digunakan untuk mengeluarkan setiap elemen dalam bekas.
Elemen dalam bekas STL biasanya daripada jenis objek, dan elemen boleh diisih, dicari, dsb. melalui fungsi Lambda.
Sebagai contoh, kod berikut menggunakan fungsi Lambda untuk mengisih bekas vektor:
std::vector<int> vec = {3,1,2,5,4}; std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });
Antaranya, fungsi Lambda digunakan untuk menentukan perbandingan perhubungan saiz dua elemen untuk menentukan kedudukan relatifnya dalam bekas.
Dalam pengaturcaraan berbilang benang, fungsi Lambda boleh digunakan untuk mentakrifkan fungsi benang dan melaksanakan logik operasi benang.
Sebagai contoh, kod berikut menggunakan fungsi Lambda untuk mencipta utas baharu:
std::thread t([]() { std::cout << "New thread" << std::endl; }); t.join();
Antaranya, fungsi Lambda digunakan untuk mentakrifkan logik berjalan bagi utas baharu.
Dalam pengaturcaraan GUI, fungsi Lambda boleh digunakan untuk menangkap objek kawalan dan melaksanakan fungsi tindak balas acara.
Sebagai contoh, kod berikut menggunakan fungsi Lambda untuk bertindak balas kepada peristiwa klik butang:
QPushButton *button = new QPushButton("Click me"); connect(button, &QPushButton::clicked, [=] { std::cout << "Button clicked" << std::endl; });
Antaranya, fungsi Lambda digunakan untuk bertindak balas kepada peristiwa klik butang untuk melaksanakan operasi yang berkaitan.
Secara umum, fungsi Lambda ialah sintaks pengaturcaraan yang sangat mudah yang boleh memudahkan penulisan kod dan meningkatkan kebolehbacaan dan kebolehselenggaraan program. Ia digunakan secara meluas dalam fungsi algoritma, bekas STL, pengaturcaraan berbilang benang dan pengaturcaraan GUI.
Atas ialah kandungan terperinci Menggunakan fungsi Lambda dan senario aplikasinya dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!