c++ - C++ 中的复合函数

标签 c++

我是C++初学者,想做复合函数的简单例子。 例如,在 MATLAB 中,我可以写

a = @(x) 2*x
b = @(y) 3*y
a(b(1))

答案是6

我搜索了以下问题。 function composition in C++ / C++11Function Composition in C++

但它们是使用高级功能创建的,例如模板,目前我对这些功能还不是很熟悉。有没有一种简单直接的方法来实现这一目标?在上面的 MATLAB 代码中,用户不需要知道函数句柄的实现。用户只需使用正确的语法即可获得结果。 C++有这样的方法吗?

** 另一个编辑:**

在上面的代码中,我在末尾放置了一个值。但是,如果我想将结果传递给第三个函数,MATLAB 仍然可以将其视为一个函数。但是,如何在 C++ 中执行此操作?

例如,除了上面的代码,考虑这段代码:

c = @(p,q) a(p)* b(q)  %This results a function
c(1,2)
answer=12

d = @(r) a(b(r))
d(1)
answer=6

function [ output1 ] = f1( arg1 )
val = 2.0;
output1 = feval(arg1,val)
end

f1(d)
answer = 12

在这段代码中,c 将两个函数作为输入,d 是复合函数。在下一个示例中,函数 f1 将一个函数作为参数并使用 MATLAB 内置函数 feval 来计算 val 处的函数。

我如何在 C++ 中实现这一点?

最佳答案

怎么样:

#include <iostream>

int main(int, char**)
{
    auto a = [](int x) { return 2 * x; };
    auto b = [](int y) { return 3 * y; };

    for (int i = 0; i < 5; ++i)
        std::cout << i << " -> " << a(b(i)) << std::endl;

    return 0;
}

关于c++ - C++ 中的复合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38706195/

相关文章:

c++ - 识别服务器的别名

c++ - C++此函数调用之前的(void)有什么作用?

c++ - 运行 "optimization=Enable"时停止 Visual Studio 移动我的断点

c++ - 如何为 Product* getProductFromID(std::string) 编写方法定义;

c++ - OpenSSL C++ RSA 标志不同于命令行标志

c++ - Qt + VS2010 : The program can't start because <xyz>. 你的电脑缺少dll

c++ - 尝试使用 glfw 和 bgfx 运行基本程序时出现 LNK2001 无法解析的外部符号 __imp_calloc

c++ - MFC 中 CTabCtrl 与 CPropertySheet 哪个更受欢迎?

c++ - 删除数组中的尾随零

c++ - 链表练习,我做错了什么?