当前位置: 首页 > 知识库问答 >
问题:

获取boost property_tree父节点

闻人仲渊
2023-03-14

我正在我的程序中使用提升property_tree。我已将树设置为使用自定义路径类型。我正在寻找的是获取特定节点的父节点ID。

下面是一个例子:

MetaStorageTree tree;

typedef boost::property_tree::basic_ptree<Framework::CommonClientServer::InterfacePathChain_t, MetaStorageTreeNode*>
    MetaStorageTreeNode_t;
class MetaStorageTree : public MetaStorageTreeNode_t;

MetaStorageTreeNode* node = new MetaStorageTreeNode(1);
MetaStorageTreeNode* node1 = new MetaStorageTreeNode(2);
tree.put(InterfacePathChain_t{0}, node);
tree.put(InterfacePathChain_t{0, 0}, node1);
tree.put(InterfacePathChain_t{0, 1}, node1);
tree.put(InterfacePathChain_t{0, 0, 0}, node);
tree.put(InterfacePathChain_t{0, 1, 0}, node1);
tree.put(InterfacePathChain_t{0, 1, 1}, node);

//InterfacePathChain_t is basically a vector<int>

结果如预期:

{0}: 1
    {0}: 2
        {0}: 1
    {1}: 2
        {0}: 2
        {1}: 1

我需要的是一种不永久存储节点的完整id的方法。我想的是一种简单地获取它的父节点id并将其推到路径的前面等等到顶层的方法。但是我似乎在property_tree中找不到这样做的方法。这可能吗?如果没有,对于这种情况还有其他计算完整路径的方法吗?

例如,对于路径{0,1,0}的节点:

    < li>id == 0 =

共有1个答案

贝嘉泽
2023-03-14

你不能。

Boost Ptree节点是独立的,并且不知道任何包含的数据结构(它是单链表的“树”等价物)。

作为一个最佳的近似,你可以在父元素中查找子元素,比如用C : boost ptree relative key。

这假设您始终有“根”可供搜索。

 类似资料:
  • 我正在尝试使用Boost来解析JSON文件。这是 JSON 文件 和一个MWE 问题:我目前知道如何读取最外层的变量<code>a。然而,我在阅读其他级别(如<code>b_a、b_b_a和b_d_a</code>等)时遇到了困难。如何使用Boost实现这一点?我不一定要寻找涉及循环的解决方案,只是想弄清楚如何“提取”内部变量。 如果其他库是最佳的,我愿意使用它们。但是到目前为止,Boost在我看

  • 本文向大家介绍javascript 获取HTML DOM父、子、临近节点,包括了javascript 获取HTML DOM父、子、临近节点的使用技巧和注意事项,需要的朋友参考一下 在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式、内容等。如何获取要更新的元素,是首先要解决的问题。令人欣慰的是,使用JavaScript获取节点的方法有很多种,这里简单做一下

  • 我正在编写一个javafx UI,希望从单击的MenuItem的eventHandler中获取contextMenu的所有者节点。 我的代码: 我想做的是获取一个对选中了上下文菜单的选项卡的引用。 我能够通过MenuItem eventHandler的handle(ActionEvent e)方法中的以下代码获得对MenuItem ContextMenu的引用: 我的想法是在菜单上使用Contex

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我的mySQL数据库中有如下表: 对于谓词,它将具有如下树视图: 我想创建一个可以选择起始节点并为此获得所有父节点的表单。例如,通过选择我想要获得: 步骤2: 有什么方法可以使用以下简单文本来打印此节点: 问题答案: 您的数据可以在RDF中表

  • 上面的数组 id=311的父节点是 id=31,id=2的父节点为null; 请问应该怎么解决?