树表达式 - 节点设置
tree expression - Node setting up
我对我为课程学习的项目感到困惑。
我必须构建一个树表达式,我知道算法是如何工作的,但是我在设置节点时遇到了困难。
老师给了我们这个class:表达式节点
它还有 2 个其他子classes:Constant Node 和 Operator Node?
并在 "Expression Tree class" 中:我在哪里构建树表达式?我有一个这种类型的堆栈:表达式节点
我的问题是:在我分配一个操作符或一个常量之后,我如何将它压入堆栈,因为类型不同。
我正在使用 C++
谢谢。
应用多态性:将指针(或引用)推送到您的节点。
由于您的堆栈包含 "ExpressionNode" 类型的元素,它可以接受从它派生的所有类型(常量和运算符)。
如果您可以访问 boost,boost::variant 就是您要找的。
参见this,是union的OO版本。
头文件
#include <boost/variant.hpp>
stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);
我对我为课程学习的项目感到困惑。 我必须构建一个树表达式,我知道算法是如何工作的,但是我在设置节点时遇到了困难。
老师给了我们这个class:表达式节点 它还有 2 个其他子classes:Constant Node 和 Operator Node?
并在 "Expression Tree class" 中:我在哪里构建树表达式?我有一个这种类型的堆栈:表达式节点
我的问题是:在我分配一个操作符或一个常量之后,我如何将它压入堆栈,因为类型不同。
我正在使用 C++ 谢谢。
应用多态性:将指针(或引用)推送到您的节点。 由于您的堆栈包含 "ExpressionNode" 类型的元素,它可以接受从它派生的所有类型(常量和运算符)。
如果您可以访问 boost,boost::variant 就是您要找的。 参见this,是union的OO版本。
头文件
#include <boost/variant.hpp>
stack<boost::variant<int,char>> s;
s.push('+');
s.push(1);