我是C++初学者,想做复合函数的简单例子。 例如,在 MATLAB 中,我可以写
a = @(x) 2*x
b = @(y) 3*y
a(b(1))
答案是6
我搜索了以下问题。 function composition in C++ / C++11和 Function 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/