Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah spesifikasi penulisan untuk ekspresi lambda fungsi dalam C++?

Apakah spesifikasi penulisan untuk ekspresi lambda fungsi dalam C++?

WBOY
WBOYasal
2024-04-11 12:54:01905semak imbas

Sintaks standard untuk menulis ungkapan Lambda fungsi C++ ialah: [capture](parameters) -> return_type { // Function body}, dengan tangkapan ialah tangkapan pembolehubah luaran, parameter ialah parameter fungsi dan return_type ialah fungsi return jenis nilai. Jenisnya dibahagikan mengikut senarai tangkapan dan senarai parameter: tangkap semua pembolehubah luaran, tiada parameter: jenis auto tangkap pembolehubah luaran tertentu, tiada parameter: jenis auto (boleh dikurangkan, parameter: jenis fungsi; Ungkapan Lambda digunakan untuk mencipta objek fungsi sementara, yang boleh diberikan kepada pembolehubah atau penunjuk fungsi, atau dihantar terus sebagai argumen.

C++ 函数lambda表达式的写法规范是什么?

Fungsi C++ Spesifikasi penulisan ungkapan Lambda

Sintaks:

[capture](parameters) -> return_type {
  // 函数体
}

Antaranya:

  • tangkapan & kod> kod lalai: ] (tangkap semua pembolehubah luaran) capture:捕获外部变量,可选,默认为 [&](捕获所有外部变量)
  • parameters:函数参数,可选
  • return_type:函数返回值类型,可选

Lambda 表达式类型:

Lambda 表达式属于匿名函数类型。其类型取决于捕获列表和参数列表:

  • 捕获所有外部变量,无参数:auto 类型
  • 捕获特定外部变量,无参数:auto 类型(可缩小)
  • 无捕获,有参数:functioneff33ae303261d79115a65b552404e91 类型

使用规范:

  • Lambda 表达式用于创建临时函数对象。
  • 可将其赋值给变量或函数指针,或直接作为参数传递。
  • Lambda 表达式中可访问捕获的外部变量,但不能修改它们(除非通过引用捕获)。
  • Lambda 表达式中的 this
  • parameter: parameter fungsi, pilihan

return_type: jenis nilai pulangan fungsi, pilihan

Jenis ungkapan Lambda :

Ungkapan Lambda ialah jenis fungsi tanpa nama. Jenisnya bergantung pada senarai tangkapan dan senarai parameter: 🎜🎜🎜Tangkap semua pembolehubah luaran, tiada parameter: auto taip 🎜🎜Tangkap pembolehubah luaran tertentu, tiada parameter: jenis auto ( Boleh dikurangkan) 🎜🎜 Tiada tangkapan, dengan parameter: fungsi7cdf24d9732dc0b00116d71c1f51dead Taip 🎜🎜🎜🎜Spesifikasi penggunaan: 🎜🎜🎜🎜Objek Lambda digunakan untuk mencipta fungsi sementara . 🎜🎜Ia boleh ditetapkan kepada pembolehubah atau penuding fungsi, atau dihantar terus sebagai parameter. 🎜🎜Pembolehubah luaran yang ditangkap boleh diakses dalam ungkapan Lambda, tetapi ia tidak boleh diubah suai (melainkan ditangkap melalui rujukan). 🎜🎜Penuding ini dalam ungkapan Lambda menunjuk kepada konteks di mana ia dicipta. 🎜🎜🎜🎜Kes sebenar: 🎜🎜
// 捕获所有外部变量,无参数
auto lambda1 = []() {
  // 可以访问外部变量
  std::cout << "Lambda 1: " << x << std::endl;
};

// 捕获特定外部变量,无参数
int x = 10;
auto lambda2 = [x]() {
  // 只可以访问捕获的外部变量 x
  std::cout << "Lambda 2: " << x << std::endl;
};

// 无捕获,有参数
auto lambda3 = [](int y) {
  // 没有捕获外部变量,y 为函数参数
  std::cout << "Lambda 3: " << y << std::endl;
};

int main() {
  lambda1();
  lambda2();
  lambda3(20);

  return 0;
}
🎜🎜Output: 🎜🎜
Lambda 1: 10
Lambda 2: 10
Lambda 3: 20

Atas ialah kandungan terperinci Apakah spesifikasi penulisan untuk ekspresi lambda fungsi dalam C++?. 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