Kennt jemand eine Bibliothek, die Ihnen erlaubt, so etwas zu tun?C++ - Funktor-Bibliothek zum Auswerten von mathematischen/arithmetischen Ausdrücken
std::transform(vecA.begin(), vecA.end(),
vecB.begin(),
vecOutput.begin(),
// run-time specified expression
magic_functor<float>("exp(a/(b+3))")
);
Wo magic_functor ist die Bibliothek bereitgestellte Funktors und a und b sind durch VECA und Vecb iteriert.
Ich könnte mir selbst etwas einfallen lassen (und ich würde sehr viel Spaß dabei haben), aber es ist wahrscheinlich besser, das Rad nicht neu zu erfinden (auch mein Boss würde mich töten). Habe einige Zeit damit verbracht, im Internet zu suchen, aber ich kann nicht wirklich etwas finden, das zur Rechnung passt.
Es muss flexibel und schnell sein, daher wäre ein Funktor-Ansatz, der die Zeichenfolge nur einmal analysiert (z. B. erstellt einen internen Ausführungsstack), ideal, aber offen für andere Lösungen.
, der wie ein Spaß, was tatsächlich scheint mir jetzt, dass Sie zu machen ntion es. – chris
Ich fürchte, ich kann keine Bibliotheken vorschlagen, die so etwas mit der Art von Binär-Funktor-Schnittstelle tun würden, die Sie brauchen würden; aber ich würde mir vorstellen, dass es ziemlich einfach wäre, Lambda-Ausdrücke zu schreiben, die mit 'exp (a/(b + 3)) umgehen. Möglicherweise nicht die ausgeklügeltste Lösung, wenn Sie es an mehreren Orten wiederholen müssen, aber soweit es die Lesbarkeit betrifft, scheint es mir in Ordnung zu sein. –