有誰知道一個庫,它允許你做這樣的事情呢?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