exprtk完成带参表达式计算

/*
  输入:2*x+5*y+6*z
*/
#include <iostream>
#include <string>
#include "exprtk.hpp"
using namespace std;
double Calc( std::string& exp,  std::vector<std::string>& list,  std::vector<double>& param)
{
    typedef exprtk::symbol_table<double> symbol_table_t;
    typedef exprtk::expression<double> expression_t;
    typedef exprtk::parser<double> parser_t;

    symbol_table_t symbol_table;
    expression_t expression;
    parser_t parser;

    for (size_t i = 0; i < list.size(); ++i) {
         
        symbol_table.add_variable(list[i], param[i]);
    }
    //向符号表中添加一些常用的数学常量,例如pi(π)和e
    symbol_table.add_constants();
    expression.register_symbol_table(symbol_table);

    parser.compile(exp, expression);

    return expression.value();
}
int main() {
    std::string exp = "2*x+5*y+6*z";
    std::vector<std::string> list = { "x", "y", "z" };
    std::vector<double> param = { 1, 2, 3 };

    double result = Calc(exp, list, param);

    std::cout << "Result: " << result << std::endl;
 
    return 0;
}

#exprtk##c++##含参表达式计算#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务