C++11 引入了 lambda 表達式,這是一種便捷的創建匿名函數對象的方式。Lambda 表達式的語法結構如下:
[capture](parameters) -> return_type { function_body }
capture
(捕獲列表):指定哪些變量會從所在的作用域被捕獲到 lambda 表達式內部使用。可以捕獲以值傳遞或引用傳遞的方式的外部變量。捕獲列表可以為空,表示沒有捕獲任何外部變量。parameters
(參數列表):與常規函數參數列表相同,可以指定任意數量和類型的參數。如果不需要參數,可以使用空括號 ()
表示。return_type
(返回類型):可選部分,用于顯式指定 lambda 表達式的返回類型。如果省略此部分,編譯器將自動推導返回類型。對于單條返回語句,可以使用 auto
關鍵字讓編譯器自動推導返回類型。function_body
(函數體):包含一系列操作,這些操作定義了 lambda 表達式的行為。函數體可以包含任意數量的語句。以下是一個簡單的 C++ lambda 表達式示例:
auto add = [](int a, int b) -> int { return a + b; }; // 創建一個匿名函數對象,接受兩個整數參數并返回它們的和
int sum = add(3, 4); // 調用 lambda 表達式并存儲結果