gpt4 book ai didi

c++ - 有没有办法在 C++ 中复合函数?

转载 作者:太空狗 更新时间:2023-10-29 20:08:56 27 4
gpt4 key购买 nike

一般问题:

如果有两个对象 AB 分别具有函数 f_A(arg list)f_B(arg list).

用 f_A(...) 和 f_B(...) 的复合函数创建对象 C 的最佳方法是什么?例如:f_C() = f_A() + f_B() 或 f_C() = f_A(f_B())

是否可以重载“+”运算符,以便我们可以创建对象 C 来做类似的事情?

auto object_c = object_a + object_b

这是我的代码示例:

class GaussianKernel : public Kernel {
public:
GaussianKernel(double sigma) : m_sigma(sigma), m_scale(1) {}

double covarianceFunction(
double X,
double Y
)
{
double result;

result = m_scale * exp(-norm(X - Y) / (m_sigma*m_sigma));

return result;
}


GaussianKernel operator+(const GaussianKernel& b) {
/*Here I would like to overload the + operator such that
I can create a kernel from two others kernels,
I mean with a covariance function compound of the previous ones
*/
}
private:
double m_sigma;
double m_scale;
};

谢谢。

最佳答案

给定两个方法 f_Af_B 你可以得到 f_C 通过使用例如 lambda 返回其他方法的总和:

auto f_C = [](/*param*/){ return f_A(/*param*/) + f_B(/*param*/); };
auto sum_result = f_C(param);

要获得复合方法,应该是这样的:

auto f_C = [](/*param*/){ return f_B( f_A(/*param*/)); };
auto compound_result = f_C(param);

PS:我知道这不能直接适用于您的示例,仍在尝试找出您到底想做什么。

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com