函数指针作为 c++++ 中将函数作为值的变量,实现了动态调用函数的功能。lambda 表达式是匿名函数,提供了一种现代简洁的函数指针替代方案。函数指针指向函数地址并通过调用符号 (&) 绑定,lambda 表达式使用 [] 语法定义,并支持捕获外部变量。两者都允许灵活地调用函数,并在排序等实战案例中发挥作用。
C++ 函数指针:函数指针与 Lambda 表达式
函数指针是 C++ 中的重要特性,它允许将函数作为一个值来使用。这使得可以动态地调用函数,从而增加了代码的灵活性。lambda 表达式是一种匿名函数,它为 C++ 函数指针提供了现代且简洁的替代方案。
函数指针
立即学习“C++免费学习笔记(深入)”;
函数指针是一个指向函数的变量。它的语法如下:
returnType (*functionPointerName)(parameterList);
登录后复制
例如,以下代码声明了一个指向一个接受两个 int 参数并返回 int 的函数的函数指针:
int (*addFunctionPointer)(int, int);
登录后复制
要使用函数指针,必须将其指向一个实际函数。这可以通过地址运算符 (&) 来完成:
addFunctionPointer = &add; // add 是一个接受两个 int 参数并返回 int 的函数
登录后复制
现在,可以使用函数指针来调用函数,就像调用普通函数一样:
int result = addFunctionPointer(10, 20);
登录后复制
Lambda 表达式
Lambda 表达式是匿名函数,不需要显式声明函数名。它们的语法如下:
[captureClause](parameterList) -> returnType { functionBody };
登录后复制
其中:
- captureClause:指定要捕获的外部变量。
- parameterList:指定函数的参数。
- returnType:指定函数的返回类型。
- functionBody:指定函数体。
例如,以下代码创建一个 lambda 表达式,接受两个 int 参数并返回它们的和:
auto addLambda = [](int a, int b) { return a + b; };
登录后复制
与函数指针类似,lambda 表达式可以存储在变量中:
auto addLambda2 = addLambda;
登录后复制
并且可以像普通函数一样被调用:
int result = addLambda2(10, 20);
登录后复制
实战案例
以下是一个使用函数指针和 lambda 表达式对数字列表进行排序的实战案例:
#include <iostream> #include <algorithm> #include <vector> using namespace std; bool compare(int a, int b) { return a > b; } int main() { vector<int> numbers = {10, 20, 5, 15, 25}; // 使用函数指针排序 sort(numbers.begin(), numbers.end(), compare); // 使用 lambda 表达式排序 sort(numbers.begin(), numbers.end(), [](int a, int b) { return a > b; }); for (int number : numbers) { cout << number << " "; } return 0; }
登录后复制
输出结果:
25 20 15 10 5
登录后复制
以上就是C++ 函数指针:函数指针与 lambda 表达式的详细内容,更多请关注抖狐科技其它相关文章!
-
小红书编号怎么去掉水印
小红书编号水印可通过以下方法去除:使用第三方工具,如水印云、apowersoft 水印消除器和 video watermark remover。手动裁剪带编号的部分。使用在线水印去除网站,如 remo...
-
C++ 函数的诊断之旅:解开困惑的密码
C++ 函数的诊断之旅:解开困惑的密码 在 C++ 开发中,函数是不可或缺的基本元素。但是,当函数出现问题时,调试和解决这些问题可能会令人沮丧。本文将带您踏上一段 C++ 函数诊断之旅,揭秘常见的陷阱...
-
python爬虫怎么关
python爬虫可通过以下方式关闭:1. close()方法:关闭爬虫,释放资源;2. signals:连接spider_closed信号,在关闭时运行代码;3. requestdone()方法:在所...
-
坐车不怕看手机!苹果iOS 18正式版发布:iPhone新增防晕车功能
9月17日消息,今日,苹果面向iPhone用户推送iOS 18正式版更新,带来全新UI设计,并支持自定义桌面等多项新功能。据了解,iOS 18正式版还新增“车辆运动提示”功能,可帮助乘...
-
Win10系统在复制文件的时候出现错误0x8007045d 由于i/o设备错误怎么办
问题:在 windows 10 系统中,复制文件时出现错误代码 0x8007045d,提示“由于 i/o 设备错误”?简单说明:此错误通常是由文件系统损坏、硬件故障或驱动程序问题引起的。引导阅读:ph...