C++ 中的函数组合

2023-11-22

有许多令人印象深刻的 Boost 库,例如 Boost.Lambda 或 Boost.Phoenix,它们在使 C++ 成为真正的函数式语言方面大有帮助。但是是否有一种直接的方法可以从任意 2 个或更多任意函数或函子创建复合函数?

如果我有:int f(int x) and int g(int x),我想做类似的事情f . g这将静态生成一个新的函数对象,相当于f(g(x)).

这似乎可以通过各种技术实现,例如所讨论的技术here。当然,您可以将调用链接到boost::lambda::bind创建一个复合函子。但是 Boost 中是否有任何东西可以轻松地允许您采用任意 2 个或多个函数或函数对象并将它们组合起来创建一个复合函子,类似于在 Haskell 等语言中的做法?


对于任何偶然发现此页面的人,bureau14 有一篇关于此主题的精彩博客文章:

http://blog.quasardb.net/function-composition-in-c11/

这利用了 C++ 11 中的新功能以及 boost。

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

C++ 中的函数组合 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 使用 Firebase firestore 进行分页 - swift 4

    我正在尝试使用 firestore 对数据进行分页 无限滚动我的表格视图 我已经尽我所能集成了谷歌提供的分页代码 但在正确加载数据方面仍然遇到问题 初始数据集根据需要加载到表视图中 然后 当用户点击屏幕底部时 下一个 x 数量的项目将被加载
  • 使用正则表达式替换坏词

    我正在尝试创建一个坏词过滤器方法 我可以在每次插入和更新之前调用该方法来检查字符串中是否有任何坏词并替换为 Censored 我有一个 SQL 表 其中有一个坏词列表 我想将它们带回来并将它们添加到列表或字符串数 组中 并检查已传入的文本字
  • 当表单重新显示失败值时,输入验证错误到文本框

    我问过一个question要知道为什么在我的应用程序中 当我使用模型绑定来验证模型时 文本框被突出显示 即红色边框和粉红色阴影背景应用于文本框 尝试更新模型 但当我手动验证时则不然 模型状态 AddModelError 到现在已经2天了 没
  • woocommerce 通知 Product_type 被错误调用。不应直接访问产品属性

    将 WooCommerce 版本更新到 3 0 后 我在商店页面上的所有产品上都会收到此通知 注意 product type 被调用 不正确地 不应直接访问产品属性 请参阅 WordPress 中的调试以获取更多信息 此消息是在 3 0 版
  • 如何检查二进制文件是否是从特定来源构建的

    我正在处理的遗留项目包括一些二进制 jar 文件形式的外部库 我们决定 为了进行分析和潜在的修补 我们希望接收该库的源代码 使用它们来构建新的二进制文件 并在经过详细且足够长的回归测试后切换到这些二进制文件 假设我们已经检索并构建了源 我实
  • UnsupportedOperation:无法执行非零当前相对搜索:Python

    下面是我的代码 我正在使用 with open r C Users Manish Desktop File5 txt r as f fo f read 20 print fo f seek 20 1 fo f read 20 print f
  • Async/await 与 then 哪个性能最好?

    我有一段简单的 JavaScript 代码 可以在 API 中执行请求并返回响应 很简单 但在这种情况下 我将收到数千个请求 那么 哪一个代码选项的性能会更好 以及为什么 目前还推荐哪一种作为良好实践 第一个选项是使用 then 来解析 P
  • 在 THREE.js 中使用纹理

    我从 THREE js 开始 尝试绘制一个带有纹理的矩形 由单一光源照亮 我认为这很简单 为简洁起见 省略了 HTML function loadScene var world document getElementById world W
  • 反应本机 |将选项添加到文本上下文菜单

    我正在开发一个版本为 0 51 的 React Native 应用程序 在一个视图中 我想向文本选择上下文菜单添加一个新选项 我在react native的Text组件中没有找到任何属性来执行此操作 经过几个小时的谷歌搜索后 我通过添加以下
  • 联合 SQL Server 表中的所有几何图形,例如 Postgres 中的 GeomUnion

    只是为了预先澄清 我正在谈论联合几何 而不是 SQL 关键字UNION 我正在尝试将一些空间数据从带有 PostGIS 的 Postgres 移动到 SQL Server 2008 直到我看到这样的语句之前一切都很好 SELECT Geom
  • QMetaProperty::read:无法处理未注册的数据类型“TreeItem*”

    Qt 不允许注册类模板 我的班级层次结构是 TreeItemTemplateBackend public QObject template
  • 如何为webpack设置多个环境变量?

    有谁知道如何向 webpack 提供多个环境变量 我试图运行以下脚本但没有成功 cross env NODE ENV production DTM ENV staging webpack config internals webpack p
  • 将数组从 jQuery 传递到 MVC.NET 控制器,在控制器上给出 null 结果,但 jQuery 函数上存在值

    我正在尝试将数组从 jQuery 函数传递到我的控制器 该数组包含内容和保存该内容的 div 的 id 当我检查通过 Firebug 中的 AJAX 发送的对象时 那里有正确的值 但在我的控制器上放置断点后 收到的值是一个空列表或数组或我尝
  • 使用gradle将jar上传到本地Maven仓库

    这个问题已经被问过好几次了 但不知何故我无法让它发挥作用 Gradle 是一个很棒的工具 但它的文档却一点也不出色 对于那些不每天使用它的人来说 没有任何例子几乎不可能理解它 我正在使用 Android Studio 我想将模块输出 jar
  • symfony2 注销

    我的问题是捕获用户注销 我所拥有的代码是 public function onAuthenticationFailure Request request AuthenticationException exception return ne
  • Angularjs:使用日期助手将时间戳格式化为 UTC 时间

    我正在寻找如何使用 AngularJS 日期助手格式化 unix 时间戳的想法 In 官方文档 只有字符串输入的解释 如果字符串输入中没有指定时区 则认为时间是本地时区 但是时间戳呢 有什么提示吗 我找到了一些带有自定义过滤器和 momen
  • 无法获取 Google Cloud Storage 存储桶的位置

    我尝试使用 Java 客户端将数据从 S3 传输到 GCS 但出现此错误 无法获取 Google Cloud Storage GCS 存储桶的位置 由于权限不足 请验证是否已授予必要的权限 我正在使用具有项目所有者角色的服务帐户 该帐户应授
  • onTouch MotionEvent getTouchMinor 和 getTouchMajor 的数字结果总是完全相同,为什么?

    查看文档 触摸主坐标和触摸副坐标是触摸事件的椭圆轴 一种是触摸区域的最长测量长度 另一种是触摸事件的最短测量长度 就像椭圆的测量一样 不过 我在几台 Android 平板电脑上测试了 getTouchMajor 和 getTouchMino
  • Magento 中多个模块覆盖同一个核心文件

    Magento 如何处理覆盖同一核心文件的多个模块 是否可以 它是如何完成的 您有 3 种解决冲突的选择 将一个冲突文件中的代码合并到另一个文件中 并关闭其中一个文件中的重写 config xml 关闭一个 config xml 中的重写
  • C++ 中的函数组合

    有许多令人印象深刻的 Boost 库 例如 Boost Lambda 或 Boost Phoenix 它们在使 C 成为真正的函数式语言方面大有帮助 但是是否有一种直接的方法可以从任意 2 个或更多任意函数或函子创建复合函数 如果我有 in