Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除树的节点_C++_Tree_Boost Spirit - Fatal编程技术网

C++ 删除树的节点

C++ 删除树的节点,c++,tree,boost-spirit,C++,Tree,Boost Spirit,我有一个关于Boost Spirit库生成的抽象语法树的问题 我在二叉搜索树中找到了许多关于删除节点和子树的信息,但在AST中找不到相同的信息。在AS树中有一个节点,这个节点是完整树的子树的根。现在我想删除节点及其所有子节点 我不知道怎么做,Boost Spirit文档也没有帮助 有人给我一些提示吗 生成树时使用(Boost 1.46.1): tree\u parse\u info=ast\u parse(expression.c\u str(),parser,skipparser) 表达式是这

我有一个关于Boost Spirit库生成的抽象语法树的问题

我在二叉搜索树中找到了许多关于删除节点和子树的信息,但在AST中找不到相同的信息。在AS树中有一个节点,这个节点是完整树的子树的根。现在我想删除节点及其所有子节点

我不知道怎么做,Boost Spirit文档也没有帮助

有人给我一些提示吗

生成树时使用(Boost 1.46.1):

tree\u parse\u info=ast\u parse(expression.c\u str(),parser,skipparser)

表达式是这样的:


(变量_17或变量_18)和函数(变量_17)您能给出一个?如果你能展示一个AST,我可以告诉你。AST在Spirit中是用户定义的,所以它实际上就是如何处理该类型,而不管Spirit如何;通过(重新)设置成员。@sehe查看邮件列表,他正在使用Spirit Classic。他使用的AST是由库提供的树解析信息。我完全没有这方面的经验。我补充了一些信息。我想我可以删除它或类似的东西,确实删除了节点,但没有成功。@cv\u和\u-he哦,呵呵。我也看到了那篇文章,但我甚至没有认出API是Spirit V1:/@user2791904
info。树和子树在默认情况下似乎是
std::vector
。我想如果你小心迭代失效,你可以使用擦除-删除习惯用法。如果您为树定义
BOOST\u SPIRIT\u USE\u LIST\u
容器将是
std::LIST
,您可以简单地使用
info.TREES.erase(冗余迭代器)
tree\u it->children.erase(冗余迭代器)
。我认为这是正确的,但我无法知道这一点,因为你没有提供一个例子,我们可以像他建议的那样进行实验。