lambda 表達式是 c++++ 中的匿名函數,用于創建一次性的函數。它們通過捕獲列表訪問外部作用域變量,并可以接收參數和定義返回類型。lambda 表達式通常用于快速創建或在運行時傳遞函數。它們可以訪問 lvalue 和 rvalue,并可以有狀態或無狀態。
C++ 中 Lambda 表達式的用法
Lambda 表達式是 C++ 中一種強大的功能,允許您定義一次性的匿名函數。它們通常用于需要快速創建或在運行時傳遞函數的地方。
語法
Lambda 表達式的一般語法為:
[capture list](parameters) -> return_type { body }
登錄后復制
其中:
capture list:這是捕獲列表,指定 lambda 表達式可以訪問的外部作用域中的變量。parameters:這是 lambda 表達式函數的參數列表。return_type:這是 lambda 表達式函數的返回類型。body:這是 lambda 表達式函數的函數體。
實戰案例
讓我們創建一個 lambda 表達式,將字符串轉換為大寫:
auto to_upper = [](const std::string& s) -> std::string { std::string result; for (char c : s) { result.push_back(std::toupper(c)); } return result; };
登錄后復制
我們可以在需要時使用這個 lambda 表達式,例如:
std::string my_string = "hello, world"; std::string upper_string = to_upper(my_string);
登錄后復制
upper_string
現在將包含轉換后的字符串 “HELLO, WORLD”。
注意
Lambda 表達式是不可命名的匿名函數。
捕獲列表中的變量必須是外部作用域中已定義的變量。
Lambda 表達式可以訪問 Lvalue 和 Rvalue。
Lambda 表達式可以有狀態或無狀態。狀態 lambda 表達式捕獲變量并修改它們,而無狀態 lambda 表達式只讀取變量。