有谁知道一个库,它允许你做这样的事情呢?C++库函数对象用于评估数学/算术表达式
std::transform(vecA.begin(), vecA.end(),
vecB.begin(),
vecOutput.begin(),
// run-time specified expression
magic_functor<float>("exp(a/(b+3))")
);
其中magic_functor是库提供的函子,a和b通过vecA和vecB迭代。
我可以拿出自己的东西(和将有很多的乐趣这样做),但它可能会更好,以避免重新发明轮子(也是我的老板会杀了我)。花了一些时间在网上搜索,但无法找到符合法案的任何内容。
它需要灵活和快速,所以仿函数的方法,只有解析字符串一次(例如,在内部建设上创建一个执行栈)是理想的,但我开放给其他的解决方案。
这实际上似乎是一个有趣的事情做,现在你我注意它。 – chris 2012-04-11 21:13:37
我恐怕我不能建议任何类似这样的二进制函子接口,你会需要这样做的库;然而,我想可以很简单地写出处理你的'exp(a /(b + 3))'的lambda表达式。可能不是最复杂的解决方案,如果您需要在多个位置重复它,但只要可读性良好,对我来说就好了。 – 2012-04-11 21:15:08