首頁 >後端開發 >C++ >C++ Lambda 表達式的語法規則是什麼?

C++ Lambda 表達式的語法規則是什麼?

WBOY
WBOY原創
2024-06-01 17:33:001062瀏覽

Lambda 表達式是一種匿名函數,語法如下:[捕獲列表] (參數列表) -> 返回類型{ 函數體}捕獲列表指定要從周圍環境捕獲的變量,參數列表指定參數列表,返回類型指定返回類型,函數體定義函數體。捕獲變數按引用捕獲,類型可根據捕獲清單、參數列表和返回類型推斷。

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

C++ Lambda 表達式的語法規則

#Lambda 表達式是一種匿名函數,它允許您在無需定義明確函數的情況下創建一個可調用的對象。其語法如下:

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

其中:

  • capture list:指定要從周圍環境捕獲的變數清單。
  • parameter list:指定 lambda 表達式的參數清單。
  • return type:指定 lambda 表達式的回傳類型。可以省略,在這種情況下,lambda 表達式將傳回 void。
  • function body:定義 lambda 表達式的函數體。

以下是一些範例:

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

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

注意:

  • Lambda 表達式可以使用C++11 及更高版本。
  • Lambda 表達式中的捕獲變數是按引用捕獲的,除非明確指定捕獲為值。
  • Lambda 表達式的類型可以根據擷取清單、參數清單和傳回類型進行推斷。

實戰案例

以下是使用 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;
}

以上是C++ Lambda 表達式的語法規則是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn