Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah ungkapan lambda dalam fungsi C++ menangkap pembolehubah luaran melalui lulus parameter?

Bagaimanakah ungkapan lambda dalam fungsi C++ menangkap pembolehubah luaran melalui lulus parameter?

王林
王林asal
2024-04-25 16:15:01963semak imbas

Ekspresi lambda C++ boleh menangkap pembolehubah luaran melalui hantaran parameter Langkah-langkah khusus adalah seperti berikut: Tentukan fungsi yang menerima ungkapan lambda sebagai parameter. Tangkap pembolehubah luaran dalam ungkapan lambda. Lulus ungkapan lambda sebagai parameter kepada fungsi. Panggil ungkapan lambda dalam fungsi untuk mengakses pembolehubah luaran yang ditangkap.

C++ 函数中的 lambda 表达式如何通过参数传递捕获外部变量?

Cara Ungkapan Lambda dalam C++ Berfungsi Menangkap Pembolehubah Luaran dengan Hantaran Parameter

Ekspresi Lambda ialah cara mudah untuk mentakrifkan fungsi tanpa nama dalam C++. Mereka boleh menangkap pembolehubah luaran, menjadikannya boleh diakses dalam skop fungsi. Apabila anda perlu menghantar ungkapan lambda sebagai parameter kepada fungsi lain, anda boleh menangkap pembolehubah luaran melalui lulus parameter.

Langkah berikut menunjukkan cara untuk menangkap pembolehubah luaran dengan lulus parameter:

#include <iostream>

using namespace std;

// 外部变量
int global_var = 10;

// 接受 lambda 表达式作为参数的函数
void print_captured_var(function<void(int)> lambda) {
    // 在 lambda 表达式中访问捕获的外部变量
    lambda(global_var);
}

int main() {
    // 定义 lambda 表达式,捕获外部变量 global_var
    auto lambda = [](int x) { cout << "捕获的变量:" << x << endl; };

    // 将 lambda 表达式作为参数传递给 print_captured_var 函数
    print_captured_var(lambda);

    return 0;
}

Output:

捕获的变量:10

Dalam contoh ini:

  • global_var ialah pembolehubah int luaran yang nilainya dimulakan 10. global_var 是一个外部 int 变量,其值初始化为 10。
  • print_captured_var 函数接受一个函数对象 lambda 作为参数,它将调用该函数对象并传递一个捕获的外部变量的值作为实参。
  • lambda 函数是一个 lambda 表达式,它捕获外部变量 global_var。在 lambda 表达式中,外部变量的值被打印到标准输出。
  • main 函数将 lambda 表达式作为参数传递给 print_captured_var 函数,然后调用该函数。
  • print_captured_var
  • Fungsi print_captured_var menerima objek fungsi lambda sebagai parameter, dan ia akan memanggil objek fungsi dan menghantar nilai pembolehubah luaran yang ditangkap sebagai parameter sebenar.
🎜Fungsi lambda ialah ungkapan lambda yang menangkap pembolehubah luaran global_var. Dalam ungkapan lambda, nilai pembolehubah luaran dicetak kepada output standard. 🎜🎜Fungsi utama menghantar ungkapan lambda sebagai parameter kepada fungsi print_captured_var dan kemudian memanggil fungsi tersebut. Fungsi 🎜🎜print_captured_var mencetak nilai pembolehubah luaran yang ditangkap dalam ungkapan lambda, mendapatkan output "Pembolehubah ditangkap: 10". 🎜🎜

Atas ialah kandungan terperinci Bagaimanakah ungkapan lambda dalam fungsi C++ menangkap pembolehubah luaran melalui lulus parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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