Lambda 表达式C++例子
时间: 2023-09-04 22:08:52 浏览: 94
以下是一个使用Lambda表达式的C++例子:
```
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
int sum = 0;
// 使用Lambda表达式来计算向量v中所有偶数的和
std::for_each(v.begin(), v.end(), [&] (int n) {
if (n % 2 == 0) {
sum += n;
}
});
std::cout << "Sum of even numbers in vector is " << sum << std::endl;
return 0;
}
```
在这个例子中,使用Lambda表达式来计算向量v中所有偶数的和。Lambda表达式使用for_each算法来遍历向量v中的所有元素,如果元素是偶数,则将其添加到变量sum中。Lambda表达式使用了捕获列表[&],表示Lambda表达式可以访问当前作用域中的所有变量(包括sum)。最后,输出变量sum的值。
需要注意的是,Lambda表达式可以访问捕获列表中的变量,但不能修改它们的值,除非使用mutable关键字来声明Lambda表达式是可变的。
相关问题
lambda表达式c++ 递归
lambda表达式是一种匿名函数,可以在需要函数对象的地方使用。lambda表达式可以递归调用自身,但是lambda无法推断其类型。为了实现lambda表达式的递归调用,可以使用一个引用参数来引用自己,通过调用的方式来推测出引用的是什么类型。比如,可以使用一个引用参数来引用自身,并在lambda表达式中递归调用该引用参数。例如,可以使用如下方式实现lambda表达式的递归调用:
```cpp
auto f1 = [](auto&& me, int j) -> int {
if (j == 0) {
return 0;
} else {
return me(me, j - 1);
}
};
cout << f1(f1, 5) << endl;
```
在这个例子中,通过使用引用参数me来引用自身,实现了lambda表达式的递归调用。这样,调用f1(f1, 5)就可以得到lambda表达式的递归结果了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [C++使用lambda表达式写递归](https://blog.csdn.net/qq_42987967/article/details/123800206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [C++11-lambda表达式](https://blog.csdn.net/weixin_45599288/article/details/123114579)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
C++ lambda表达式的例子
lambda表达式是一种用于创建匿名函数的语法形式,通常用于简短的函数定义,可以作为其他函数的参数进行传递。下面是一个lambda表达式的例子:
```python
add = lambda x, y: x + y
print(add(3, 5)) # 输出 8
```
上述代码定义了一个匿名函数,它接受两个参数 x 和 y,将它们相加并返回结果。我们将这个函数赋值给变量 add,并调用它输出结果。
另一个例子是使用 lambda 表达式对列表进行排序:
```python
fruits = ['apple', 'orange', 'banana', 'kiwi']
sorted_fruits = sorted(fruits, key=lambda x: len(x))
print(sorted_fruits) # 输出 ['kiwi', 'apple', 'banana', 'orange']
```
这里使用 lambda 表达式作为排序函数的 key 参数,指定按照水果名称的长度进行排序。
阅读全文