指向函数或函子的指针?函数发生器

时间:2011-05-04 21:29:39

标签: c++ class function expression functor

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

例如,

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: 我不知道如何通过关键词搜索这个问题。 功能,构造,发电机,指针,仿函数...... 没有给我预期的结果。

谢谢大家!

2 个答案:

答案 0 :(得分:5)

你不能在C ++运行时生成函数,所以你必须使用仿函数。

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

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

答案 1 :(得分:1)

有一段很好的“rosetta stone”question(几乎)这个问题不久了。

有几个C ++答案:一个使用boost::lambda,一个使用conventional approach,一个使用MPL(以及C++0x版本,恕我直言如果你的编译器支持它是理想的解决方案)。显然,简单的二次方法需要推广到任意数量的幂,但这比在了解函数对象概念时要简单得多。