Lambda 表達式是 C++11 引入的一種匿名函數語法,它可以方便地創建臨時函數對象,用于在函數調用時作為參數傳遞或者作為局部函數使用。Lambda 表達式可以捕獲外部變量,并具有與普通函數相似的語法結構。
主要作用如下:
- 簡化代碼:Lambda允許快速定義小函數,使代碼更加簡潔。
auto add = [](int a, int b) { return a + b; };
auto result = add(5, 3); // result is 8
- 局部作用域:可以在任何地方定義Lambda,捕獲局部變量,方便臨時使用。
int localValue = 10;
auto lambda = [localValue] { /* 使用localValue */ };
- 算法參數:常用于標準庫算法,如排序和搜索,簡化自定義行為的實現。
std::vector<int> vec = {5, 3, 1, 4, 2};
std::sort(vec.begin(), vec.end(), [](int a, int b) { return a < b; });
- 事件處理:在GUI編程中,Lambda用于定義事件處理器,使代碼更清晰。
// 假設有一個按鈕對象button
button->onClick = [this]() { this->doSomething(); };
- 回調函數:適用于異步編程,簡化回調機制。
void asyncOperation(int value, std::function<void(bool)> callback);
......
void asyncOperation(42, [](bool success) {if (success) {std::cout << "Operation succeeded!" << std::endl;} else {std::cout << "Operation failed!" << std::endl;}
});