将 lambda 函数作为参数传递 C++

2024-03-01

我正在努力将 lambda 函数 R1 和 R2 传递给我的模板函数 F。但是,我不确定我是否正确执行此操作。

函数 F 应该使用主函数中的所有参数并执行相关计算(牛顿近似根法)。

我是使用模板函数的新手。因此,任何帮助将不胜感激。

//main.cpp
    #include <iostream>
    #include "Funct.h"
    using namespace std;

    int main()
    {

        auto f1 = [](long double x) { return (x * x) - 2; };
        auto f2 = [](long double x) { return (2 * x);
        auto RV1 = F<long double>(1.0L,1.0E-20L,f1(1.0L),f2(1.0L));
        return 0;


    }

    //Funct.h
    #include <iostream>
    #include<cmath>
    template<typename T> T F(long double guess, long double tolerance,T ((*f)(const T x)), T((*df)(const T x)));
    template<typename T> T F(long double guess, long double tolerance,T ((*f)(const T x)), T((*df)(const T x)))
    {

    }

首先,正如 @tkausl 所提到的,当您将 lambda 作为参数传递时,不应调用它们,因为这样它们会自动求值并生成值(在本例中为长双精度值),但您的函数需要一个函数作为参数。

相反,您应该在被调用函数本身中调用作为参数提供的函数(在本例中为 F)。

您可以使用std::function来描述函数原型,从而避免“丑陋”的函数指针。

首先您需要包括<functional>来自标准库的头文件。

然后你可以写这样的东西:

template <typename T>
using Func = std::function<T(T)>;

template <typename T>
T F(long double guess, long double tolerance, Func<T> f, Func<T> df); 

在哪里std::function<long double(long double)>括号中的类型表示函数参数的类型,括号之前的类型是函数原型的返回类型;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 lambda 函数作为参数传递 C++ 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit

随机推荐

  • com.android.builder.testing.api.DeviceException:没有连接的设备!詹金斯错误

    我在 Windows 7 机器上安装了 Jenkins 2 73 1 没有从站 构建 Android 应用程序设置只有一项工作 我有connectedCheckgradle 任务作为作业构建过程的一部分执行 当我重新启动计算机并运行 Jen
  • 可拖动项目总是下降约 80px

    我对可拖动项目有奇怪的行为 每次我将它拖到我的堆栈上时 它都会从放置位置向下下降约 80px 这是一个近似值 也许对于另一部手机 它可能是其他值 x 值对我来说似乎没问题 这是代码 class GesturePage extends Sta
  • 如何在 DefaultRouter() 中进行反向操作

    我正在设置一个新的测试 并且我想进行相反的操作 router DefaultRouter router register profile views UserProfileViewSet base name profile urlpatte
  • 如何动态更改 Apollo Web Socket Link URI?

    目前我已经设置了 Apollo websocket 链接 如下所示 const wsLink new WebSocketLink uri ws example com graphql token getToken options recon
  • 如何将 Git 存储库从 Beanstalk 移至 Github?

    我的代码仓库在豆茎 http beanstalkapp com 如何将代码从 Beanstalk 移至Github https github com 建议的方法是 git clone bare url for beanstalk repo
  • R:如何从日期中删除当天? [复制]

    这个问题在这里已经有答案了 我在 df 列中有一堆日期 格式如下 dd mm yyyy 我希望它看起来像这样 01 2020 mm yyyy 如何从所有日期中删除这一天 Use format指定您想要的日期格式 date lt as Dat
  • 从多个 JavaScript 线程访问 IndexedDB

    概述 我试图避免从网页和网络工作人员访问 IndexedDB 时出现竞争情况 Setup 当用户使用站点时将项目保存到本地 IndexedDB 的网页 每当用户将数据保存到本地数据库时 记录就会被标记为 未发送 Web worker 后台线
  • 每当在树视图中添加新节点时创建事件处理程序

    我想编写一个自定义类 每当我向树视图添加一个节点时 它都应该调用一个事件 这样我就可以递归地运行它 我很少使用TreeView 但乍一看这是我的第一印象 由于无法继承 TreeViewCollection 因此您可能必须在新类上创建一个单独
  • 如何获得像Instagram一样1:1比例的Android Camera2?

    我的问题很简单 如何获得安卓系统android hardware Camera2像 Instagram 一样 1 1 比例且不变形 我用 GoogeSamples 项目进行了测试android Camera2Basic https gith
  • Mac OS X 虚拟环境中的 Python 安装是否包含一个可以包含到 Xcode 中的框架?

    我喜欢将 Python 与 numpy scipy 和其他一些包一起使用 我是一个绝对的 Python 初学者 在 Mac OS X 下安装时遇到一些问题 我按照这两个教程来安装 python 1 http hackercodex com
  • 使用 jQuery AJAX 调用类方法?

    我正在从 PHP AJAX 库 xajax 迁移到 jQuery AJAX 使用 xajax 我可以通过将公共类方法绑定到 javascript 函数名称 例如 this gt registerFunction javascriptFunc
  • wpf 网格最佳实践

    我有一个包含许多标签 组合框和文本框的网格 我在每个单元格中都放置了标签和组合框 最佳实践是什么 1 将组合框和标签放入堆栈面板中 然后将其放入单元格中 2 只需将两个控件直接放入网格单元格中 两种方法的优点和缺点是什么 谢谢 将两个控件放
  • 在 Java 中,写入文件比迭代数组慢多少? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我意识到一般来说写入速度较慢 但我想知道是多少 我在服务器类中有一些代码写入日志文件 if inputLine equals y Syste
  • C# 如何检查 if 语句的哪一部分是正确的 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道如何检查 if 语句的哪一部分是正确的 例如 如果你有这个 int a 1 b c d if a gt 0 b gt 1 c
  • 使用所见即所得编辑器编辑 HTML

    我有一个带有 HTML 字符串的 datagridview 使用 CellDoubleClick 事件 我在 WebBrowser 控件中显示 html 字符串 In Form1 private void dataGridView1 Cel
  • 订阅 FormBuilder valueChanges 时,使用 debounceTime 和 uniqueUntilChanged 不起作用

    非常简单地说 我想在用户停止输入一段时间后执行查询 我见过的每个教程都使用FormBuilder建议订阅valueChanges输入字段的 同时管道debounceTime and distinctUntilChanged this thr
  • 与语言无关的构建管理系统

    在我的职业生涯中 我曾多次在一个软件团队工作 该团队确定a 我们需要一个构建 测试系统b 我们应该自己写c 我们可以让开发人员花一周的时间来完成它 然后他们就不必再碰它了 每一次 这都会导致一个系统似乎只对编写它的人有效 并且需要他们持续关
  • Rails 3.1 上的 Capistrano 部署/资产失败

    我添加了这一行load deploy assets 到我的 Capfile 以使用 Rails 3 1 部署资产 卡皮斯特拉诺到达这条线 executing cd home deploy armonia stage releases 201
  • pitest无法找到junit测试

    我的 gradlepitest 无法给我正确的结果 看起来它无法找到我的测试文件 我有以下 build gradle 文件 apply plugin java apply plugin maven apply plugin info sol
  • 将 lambda 函数作为参数传递 C++

    我正在努力将 lambda 函数 R1 和 R2 传递给我的模板函数 F 但是 我不确定我是否正确执行此操作 函数 F 应该使用主函数中的所有参数并执行相关计算 牛顿近似根法 我是使用模板函数的新手 因此 任何帮助将不胜感激 main cp