Rumah >pembangunan bahagian belakang >C++ >Apakah peraturan sintaks untuk ungkapan lambda C++?

Apakah peraturan sintaks untuk ungkapan lambda C++?

WBOY
WBOYasal
2024-06-01 17:33:001063semak imbas

Ungkapan Lambda ialah fungsi tanpa nama dengan sintaks berikut: [senarai tangkapan] (senarai parameter) -> jenis pulangan {function body} Senarai tangkapan menentukan pembolehubah untuk ditangkap dari persekitaran sekeliling, senarai parameter menentukan senarai parameter , dan jenis pulangan menentukan jenis Pulangan, badan fungsi mentakrifkan badan fungsi. Pembolehubah tangkapan ditangkap melalui rujukan, dan jenis boleh disimpulkan daripada senarai tangkapan, senarai parameter dan jenis pulangan.

C++ Lambda 表达式的语法规则是什么?

Peraturan sintaks untuk ungkapan C++ Lambda

Ungkapan Lambda ialah fungsi tanpa nama yang membolehkan anda mencipta objek boleh panggil tanpa mentakrifkan fungsi eksplisit. Sintaksnya adalah seperti berikut:

[capture list] (parameter list) -> return type { function body }

Di mana:

  • senarai tangkap: Menentukan senarai pembolehubah untuk ditangkap dari persekitaran sekeliling.
  • senarai parameter: Tentukan senarai parameter ungkapan lambda.
  • jenis pemulangan: Tentukan jenis pemulangan ungkapan lambda. Boleh diabaikan, dalam hal ini ungkapan lambda mengembalikan batal.
  • fungsi badan: Tentukan badan fungsi ungkapan lambda.

Berikut ialah beberapa contoh:

// Capture 变量 x 并返回 x 的平方
auto square = [](int x) { return x * x; };

// 捕获变量 y 并返回 y 的立方
auto cube = [&](int y) { return y * y * y; };

Nota:

  • Ekspresi Lambda boleh digunakan dalam C++11 dan ke atas.
  • Pembolehubah yang ditangkap dalam ungkapan Lambda ditangkap melalui rujukan melainkan ditangkap kerana nilai dinyatakan secara eksplisit.
  • Jenis ungkapan Lambda boleh disimpulkan berdasarkan senarai tangkapan, senarai parameter dan jenis pulangan.

Kes praktikal

Berikut ialah contoh mudah menggunakan ungkapan lambda:

#include <iostream>
#include <vector>

using namespace std;

int main() {
  // 使用 lambda 表达式对向量中的每个元素平方
  vector<int> numbers = {1, 2, 3, 4, 5};
  for_each(numbers.begin(), numbers.end(), [](int& num) { num *= num; });

  // 使用 lambda 表达式对向量进行排序
  sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; });

  // 打印排序后的向量
  for (int num : numbers) {
    cout << num << " ";
  }
  cout << endl;

  return 0;
}

Atas ialah kandungan terperinci Apakah peraturan sintaks untuk ungkapan lambda 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