匿名函數,又稱lambda表達式,是一種不指定名稱的函數,用于一次性使用或傳遞函數指針。特點有:匿名性、一次性使用、閉包、返回類型推斷。實戰中常用于排序或其他一次性函數調用。
C++ 匿名函數的用法和特點
匿名函數,也稱作Lambda表達式,是一種在定義時不指定名稱的函數,通常用于定義一次性使用的函數,或在需要傳遞函數指針時使用。
語法
Lambda表達式的基本語法如下:
[capture list] (parameters) -> return type { function body }
登錄后復制capture list: 用于捕獲外部變量,類似于函數中的auto
關鍵字,可以指定要捕獲的變量名或引用。parameters: Lambda表達式的參數列表。return type: Lambda表達式的返回類型。function body: Lambda表達式的函數體。
特點
匿名性: Lambda表達式沒有名稱,只能通過函數指針或其他語法結構引用。一次性使用: Lambda表達式通常用于一次性使用,定義后一般不會被再次調用。閉包: Lambda表達式可以捕獲外部變量,形成閉包,可以使用外部變量的值。返回類型推斷: Lambda表達式的返回類型可以由編譯器推斷,除非明確指定。
實戰案例
以下是一個使用Lambda表達式排序向量的示例:
#include <vector> #include <algorithm> int main() { std::vector<int> vec = { 1, 3, 2, 5, 4 }; // 使用Lambda表達式對向量排序 std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; }); // 輸出排序后的向量 for (auto& elem : vec) { std::cout << elem << " "; } std::cout << std::endl; return 0; }
登錄后復制
輸出:
1 2 3 4 5
登錄后復制