我正在尝试构建一个多项式函数生成器,以便它将一个 vector (任意大小)作为参数,并生成一个以后可以使用的多项式函数。

例如,

poly_gen(vector<int> power_index)

以(我可以用另一个函数调用)的形式返回一个函数(或通过其他方法)
y(k)=a0+ a1*n+ a2*n^2 + a3*n^3 + ... + ak*n^k

其中a0,a1 .... ak存储在 vector power_index中

然后我可以用
int calc_poly(int n)

这个calc_poly可以给我返回一个数字,该数字是使用poly_gen()生成的多项式表达式计算得出的

PS:
我不知道如何用关键词搜索这个问题。
功能,构造,生成器,指针,函子...
没有给我想要的结果。

谢谢你们!

最佳答案

您无法在C++的运行时生成函数,因此必须使用函子。

您可以创建一个对象,该对象以某种方式(可能是直接副本)存储power_index给定的系数,并为其提供一个operator() (int n)运算符,该运算符将获取系数并计算多项式的值(霍纳法则?)。然后,您可以自由传递该对象。

因此,您需要一个构造函数,一个系数的内部表示形式以及一个进行实际计算的operator()。应该足够简单。

10-07 13:22
查看更多