我想用 Python 方式在 C++11 元组中实现一个简单的树。在 Python 中,我们可以使用 type(obj) 来检查运行时对象的类型,并将不同类型的对象传递给一个函数,我已经为 calc() 编写了伪代码,如何在 c++ 中做到这一点?
我尝试打印 typeid(child1).name() 和 typeid(tree).name(),它们是“St5tupleIIciiEE”和“St5tupleIIcS_IIciiEES0_EE”。
我的环境是 g++ 4.8.1。谢谢!
// pseudo code
int calc(tuple tree) {
symbol = type(get<0>(tree));
l_child = type(get<1>(tree));
r_child = type(get<2>(tree));
l = (type(l_child) == tuple) ? calc(l_child) : l_child;
r = (type(r_child) == tuple) ? calc(r_child) : r_child;
return l symbol r;
}
int main()
{
auto l_child = make_tuple('*', 1, 2);
auto r_child = make_tuple('-', 5, 1);
auto tree = make_tuple('+', l_child, r_child);
cout << calc(tree) << endl;
}