常に変化する変数を使用してexprtkの式を作成しています。ExprTk:値が変更されたときに式を再コンパイルする必要があります
をリセットして、再コンパイルする必要がありますか?変数の値を変更するたびに、exprtk::symbol_table
が更新されますか?
更新された値は、既存のコンパイル済み式によって直接評価されますか?
#include <iostream>
#include <string>
#include "exprtk.hpp"
int main() {
std::string expression_string = "y := x + 1";
int x = 1;
exprtk::symbol_table<int> symbol_table;
symbol_table.add_variable("x", x);
exprtk::expression<int> expression;
expression.register_symbol_table(symbol_table);
exprtk::parser<int> parser;
if (!parser.compile(expression_string, expression))
{
std::cout << "Compilation error." << std::endl;
return 1;
}
expression.value(); // 1 + 1
x = 2;
// Do I have to create a new symbol_table, expression and parse again?
// Or does the expression evaluate the new value directly?
expression.value(); // 2 + 1?
return 0;
}