【C++】Lambda表达式

C++ Lambda表达式学习笔记

1. 了解C++ Lambda表达式的基本概念

  • 作用:Lambda表达式是一种匿名函数,可以在需要函数的地方直接定义函数体,而无需另外命名函数。
  • 优势:Lambda表达式使得代码更加简洁,提高了可读性,尤其适用于短小的函数或者需要临时定义函数的场景。
  • 发展历程:Lambda表达式是C++11引入的新特性,通过简洁的语法实现了匿名函数的定义。

示例代码

auto sum = [](int a, int b) { return a + b; }; // 定义一个Lambda表达式
int result = sum(3, 4); // 调用Lambda表达式
std::cout << "Result: " << result << std::endl;

2. 学习C++ Lambda表达式的多种应用场景

  • 函数对象替代:Lambda表达式可以直接定义函数对象,用于替代传统的函数对象或函数指针。
  • STL算法应用:Lambda表达式可以作为STL算法函数的参数,用于对容器元素进行灵活的处理。
  • 事件处理:Lambda表达式可以作为回调函数,用于处理事件或异步操作的回调逻辑。

示例代码

// Lambda表达式作为函数对象
std::vector<int> nums = {1, 2, 3, 4, 5};
std::for_each(nums.begin(), nums.end(), [](int x) { std::cout << x << " "; });
// Lambda表达式作为STL算法函数的参数
auto greaterThan3 = std::count_if(nums.begin(), nums.end(), [](int x) { return x > 3; });
// Lambda表达式作为回调函数
std::thread t([]() { std::cout << "Thread running..." << std::endl; });
t.join();

3. 掌握C++ Lambda表达式的使用技巧

  • 捕获列表:Lambda表达式可以通过捕获列表捕获外部变量,使得Lambda函数能够访问其作用域外的变量。
  • 参数列表:Lambda表达式可以指定参数列表,定义输入参数,用于接收传递给Lambda函数的参数。
  • 返回类型:Lambda表达式可以指定返回类型,或使用自动类型推导来推断返回类型。

示例代码

int value = 10;
auto lambda = [value](int x) -> int { return x + value; }; // 捕获外部变量并指定返回类型
int result = lambda(5); // 调用Lambda表达式

4. 实战案例分析

  • STL算法应用:Lambda表达式可以与STL算法结合使用,实现灵活的数据处理和操作。
  • 事件处理:Lambda表达式可以作为事件处理函数,用于处理GUI程序或异步操作中的事件。
  • 线程编程:Lambda表达式可以作为线程函数,用于多线程编程中,简化线程的创建和管理。

示例代码

// 使用Lambda表达式求取向量中的偶数个数
std::vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int evenCount = std::count_if(nums.begin(), nums.end(), [](int x) { return x % 2 == 0; });
std::cout << "Even count: " << evenCount << std::endl;

// 使用Lambda表达式作为按钮点击事件处理函数
Button button;
button.onClick([]() { std::cout << "Button clicked!" << std::endl; });

// 使用Lambda表达式创建线程
std::thread t([]() { std::cout << "Thread running..." << std::endl; });
t.join();
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值