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;}
});