このようなことをするライブラリを知っている人はいますか? magic_functorは、ライブラリが提供するファンクタであり、a及びbはvecAとvecBを通して反復される数学/算術式を評価するためのC++ファンクタライブラリ
std::transform(vecA.begin(), vecA.end(),
vecB.begin(),
vecOutput.begin(),
// run-time specified expression
magic_functor<float>("exp(a/(b+3))")
);
。
私は自分自身で何かを考え出すことができましたが、そうするのが楽しいですが、車輪を改革しないでください(私の上司も私を殺すでしょう)。 Webを検索するのに時間を費やしましたが、実際に請求書に適合するものを見つけることはできません。
これは柔軟で高速である必要があります。そのため、文字列を一度だけ解析する(たとえば、実行時に内部的に実行スタックを作成する)ファンクタのアプローチが理想的ですが、他のソリューションには開放されています。
これは実際にあなたが私にしているようなものですそれはそれです。 – chris
私は、バイナリファンクタインターフェイスのようなものを必要とするようなライブラリはお勧めできません。しかし、あなたの 'exp(a /(b + 3))'を扱うラムダ式を書くのはかなり簡単だろうと思います。複数の場所でそれを繰り返す必要がある場合は、おそらく最も洗練された解決策ではないかもしれませんが、可読性が向上する限り、それは私にとっては良さそうです。 –