#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个简单的lambda表达式,用于打印消息
auto print_message = []() {
std::cout << "Hello, Lambda!" << std::endl;
};
// 调用lambda表达式
print_message();
// 定义一个带有参数的lambda表达式,用于计算两个数的和
auto add = [](int a, int b) -> int {
return a + b;
};
// 使用lambda表达式计算和并打印结果
std::cout << "Sum: " << add(3, 5) << std::endl;
// 使用lambda表达式作为std::for_each的参数,遍历并打印vector中的元素
std::vector<int> numbers = {1, 2, 3, 4, 5};
std::for_each(numbers.begin(), numbers.end(), [](int n) {
std::cout << n << " ";
});
std::cout << std::endl;
// 定义一个捕获外部变量的lambda表达式
int factor = 2;
auto multiply_by_factor = [factor](int x) {
return x * factor;
};
// 使用捕获外部变量的lambda表达式
std::cout << "Multiply by factor: " << multiply_by_factor(5) << std::endl;
return 0;
}
定义简单的lambda表达式:
auto print_message = []() {
std::cout << "Hello, Lambda!" << std::endl;
};
这里定义了一个不带参数的lambda表达式,它只执行打印操作。[]表示没有捕获任何外部变量。
带有参数的lambda表达式:
auto add = [](int a, int b) -> int {
return a + b;
};
这个lambda表达式接受两个整数参数并返回它们的和。-> int是返回类型说明符,虽然可以省略,但显式声明返回类型可以提高代码的可读性。
使用lambda表达式作为函数参数:
std::for_each(numbers.begin(), numbers.end(), [](int n) {
std::cout << n << " ";
});
这里将lambda表达式作为std::for_each的第三个参数,用于遍历并打印std::vector中的每个元素。
捕获外部变量的lambda表达式:
int factor = 2;
auto multiply_by_factor = [factor](int x) {
return x * factor;
};
这个lambda表达式捕获了外部变量factor,并在其内部使用。[factor]表示按值捕获factor,即在lambda表达式中使用的是factor的一个副本。
通过这些示例,你可以看到C++中的lambda表达式非常灵活,可以用于各种场景,包括简单的函数替代、复杂的算法实现以及捕获外部变量等。
上一篇:c++ set
下一篇:c++在线编程
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站