升级补丁
C++ 函数指针:函数指针与 lambda 表达式-C++
来源:祺点源码论坛     阅读:82
网站管理员
发布于 2024-09-19 09:00
查看主页

函数指针作为 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 表达式的详细内容!

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 升级补丁
相关推荐
邮件如何拷贝u盘文件-电脑知识
win7怎么更改任务栏颜色 win7任务栏颜色更改教程-Windows系列
0xc000000f无法开机-电脑知识
Bitget Wallet钱包APP下载地址_Bitget Wallet钱包官方网站下载步骤-web3.0
C++ 函数中引用与指针传递的最佳实践-C++

首页

消息

购物车

我的