c++ Lambda表达式 简单实验

C++11引入的Lambda表达式是一种非常强大的特性,它允许我们定义匿名函数对象。Lambda表达式常用于回调函数、STL算法中需要传递函数对象的场景等。下面是一个简单的C++ Lambda表达式的实验:

#include <iostream>  
#include <vector>  
#include <algorithm>  
  
int main() {  
    // 定义一个包含整数的vector  
    std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};  
  
    // 使用Lambda表达式,将每个元素乘以2  
    std::for_each(numbers.begin(), numbers.end(), [](int n) {  
        std::cout << n * 2 << " ";  
    });  
    std::cout << std::endl;  
  
    // 使用Lambda表达式查找vector中的最大元素  
    auto max_element = std::max_element(numbers.begin(), numbers.end(), [](int a, int b) {  
        return a < b;  
    });  
    std::cout << "Max element is: " << *max_element << std::endl;  
  
    // 使用Lambda表达式和一个捕获列表捕获外部变量  
    int sum = 0;  
    std::for_each(numbers.begin(), numbers.end(), [&sum](int n) {  
        sum += n;  
    });  
    std::cout << "Sum of elements is: " << sum << std::endl;  
  
    return 0;  
}

在这个实验中,我们做了以下几件事情:

  1. 定义了一个包含整数的std::vector
  2. 使用std::for_each算法和Lambda表达式将vector中的每个元素乘以2并打印出来。Lambda表达式[](int n) { std::cout << n * 2 << " "; }没有捕获任何外部变量,它只接受一个整数参数n,并打印出n的两倍。
  3. 使用std::max_element算法和另一个Lambda表达式查找vector中的最大元素。Lambda表达式[](int a, int b) { return a < b; }定义了如何比较两个元素,这里是比较它们的大小。
  4. 再次使用std::for_each算法和一个捕获了外部变量sum的Lambda表达式来计算vector中所有元素的和。这里使用了引用捕获[&sum],意味着Lambda表达式内部可以直接修改外部变量sum的值。

Lambda表达式的语法如下:

[capture](parameters) -> return_type { body }
  • [capture]:捕获列表,用于捕获Lambda表达式外部的变量。可以是值捕获[var]、引用捕获[&var]或混合捕获[var1, &var2]
  • (parameters):参数列表,与普通函数参数列表类似。
  • -> return_type:返回类型,如果Lambda表达式没有返回值,可以省略。
  • { body }:Lambda体,即函数体,包含Lambda要执行的代码。

这个简单的实验展示了Lambda表达式的灵活性和强大功能,它允许我们编写简洁、易读的代码,并避免定义冗长的函数或函数对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值