#include <iostream>
#include <vector>
#include <algorithm>
int main() {
// 定义一个简单的lambda表达式,捕获外部变量x
int x = 10;
auto lambda1 = [x]() {
std::cout << "Value of x: " << x << std::endl;
};
lambda1(); // 输出: Value of x: 10
// 定义一个带有参数的lambda表达式
auto lambda2 = [](int a, int b) {
return a + b;
};
std::cout << "Sum: " << lambda2(5, 3) << std::endl; // 输出: Sum: 8
// 使用lambda表达式作为std::sort的比较函数
std::vector<int> vec = {5, 2, 8, 1, 9};
std::sort(vec.begin(), vec.end(), [](int a, int b) {
return a > b;
});
for (int num : vec) {
std::cout << num << " "; // 输出: 9 8 5 2 1
}
std::cout << std::endl;
// 捕获列表可以包含多个变量,并且可以按值或按引用捕获
int y = 20;
auto lambda3 = [&x, y]() mutable {
x += y;
std::cout << "Updated value of x: " << x << std::endl;
};
lambda3(); // 输出: Updated value of x: 30
return 0;
}
x
(按值捕获)。lambda表达式内部不能修改捕获的变量。std::sort
的比较函数,使得排序结果是降序排列。x
(按引用捕获)和y
(按值捕获),并且通过mutable
关键字允许修改捕获的变量。希望这些示例能帮助你理解C++中的lambda表达式。
上一篇:c++编译
下一篇:c++if语句
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站