获取 boost property_tree 父节点
Getting boost property_tree parent node
我在我的程序中使用了 boost 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} 的节点:
- id == 0 => 路径 = {0}
- parent != NULL => parent.id == 1 => path = {1, 0}
- parent != NULL => parent.id == 0 => path = {0, 1, 0}
- parent == NULL => end
你不能。
Boost Ptree 节点是自包含的,不知道任何包含的数据结构(它是 "tree" 等同于单链表的)。
作为最佳近似值,您可以在父项中查找子项,例如与 .
类似的内容
这假设您始终有 "a root" 可供搜索。
我在我的程序中使用了 boost 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} 的节点:
- id == 0 => 路径 = {0}
- parent != NULL => parent.id == 1 => path = {1, 0}
- parent != NULL => parent.id == 0 => path = {0, 1, 0}
- parent == NULL => end
你不能。
Boost Ptree 节点是自包含的,不知道任何包含的数据结构(它是 "tree" 等同于单链表的)。
作为最佳近似值,您可以在父项中查找子项,例如与
这假设您始终有 "a root" 可供搜索。