首頁 > 後端開發 > C++ > 主體

C++ 函式lambda表達式的寫法規格是什麼?

WBOY
發布: 2024-04-11 12:54:01
原創
921 人瀏覽過

C 函數 Lambda 表達式的寫法規範語法為:[capture](parameters) -> return_type { // 函數體},其中 capture 為捕獲外部變量,parameters 為函數參數,return_type 為函數傳回值類型。其類型根據捕獲清單和參數清單分為:捕獲所有外部變量,無參數:auto 類型;捕獲特定外部變量,無參數:auto 類型(可縮小);無捕獲,有參數:function 類型。 Lambda 表達式用於建立臨時函數對象,可以將其賦值給變數或函數指針,或直接作為參數傳遞。

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

C 函數Lambda 表達式的寫法規格

語法:

[capture](parameters) -> return_type {
  // 函数体
}
登入後複製

其中:

  • capture:捕獲外部變量,可選,預設為[&](捕獲所有外部變數)
  • #parameters:函數參數,可選
  • return_type:函數傳回值類型,可選

Lambda 表達式類型:

Lambda 表達式屬於匿名函數類型。其類型取決於捕獲列表和參數列表:

  • 捕獲所有外部變量,無參數:auto 類型
  • 捕獲特定外部變量,無參數:auto 類型(可縮小)
  • 無捕獲,有參數:function<return_type(parameters)> 類型

#使用規範:

  • Lambda 表達式用於建立臨時函數物件。
  • 可將其賦值給變數或函數指針,或直接傳遞為參數。
  • Lambda 表達式中可存取捕獲的外部變量,但不能修改它們(除非透過引用捕獲)。
  • Lambda 表達式中的 this 指標指向建立它們的上下文。

實戰案例:

// 捕获所有外部变量,无参数
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;
}
登入後複製

#輸出:

Lambda 1: 10
Lambda 2: 10
Lambda 3: 20
登入後複製

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

相關標籤:
c++
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板