C++ 使用boost查找图形中的子节点

C++ 使用boost查找图形中的子节点,c++,boost,graph,boost-graph,C++,Boost,Graph,Boost Graph,我是图书馆的新手。是否有任何方法可以使用boost查找图的所有子节点。或者我可以参考的任何文件来实施这一点都会有所帮助。我考虑使用Out_Edge迭代器,因为没有Out Edge意味着子节点。第一次阅读时,我完全理解了您的问题。只是在第二次阅读时,我怀疑你实际上是想寻找叶节点 查找子节点 如果您有一个给定的节点(例如,顶点#5),并且希望列出使用一条弧(边)可以到达的节点,那么这个问题是有意义的 给出一个图表: boost::adjacency_list<> g(10); 图表如下

我是图书馆的新手。是否有任何方法可以使用boost查找图的所有子节点。或者我可以参考的任何文件来实施这一点都会有所帮助。我考虑使用Out_Edge迭代器,因为没有Out Edge意味着子节点。

第一次阅读时,我完全理解了您的问题。只是在第二次阅读时,我怀疑你实际上是想寻找叶节点

查找子节点 如果您有一个给定的节点(例如,顶点#5),并且希望列出使用一条弧(边)可以到达的节点,那么这个问题是有意义的

给出一个图表:

boost::adjacency_list<> g(10);
图表如下所示:

查找Nemo线索节点 连接顶点的边数称为顶点的阶数。可以使用
out\u degree
查询输出边的数量:

for(auto-vd:boost::make_iterator_range(顶点(g)))

你能访问这个页面吗?有没有不用ptree的方法?只是好奇。@H.H这完全没有关系。今晚我可以在这一层发表演讲。这真的很简单。不过,如果OP能够展示一些现有的code@H.H这不适用于通用图形(仅适用于树),并且不允许任何图形算法。我刚刚发布了一个答案,但在重读这个问题时,我认为Bad_Coder可能一直在问关于叶节点的问题。我现在要补充一些。只要说叶节点的out阶数为0就足够了。如果问题是关于查找叶节点的,则添加了备选答案。您好,谢谢您的回复。我只是想知道是否可以使用out_degree函数,然后检查它是否返回零,那么这个节点就是一个子节点。我刚才不是说过了吗,并展示了代码(同时也使用了它来可视化它)。请注意,在无向图中,你需要使用<代码>度(VD,G)=1</代码>或类似。我只是太快:)如果你考虑指导/辅导运行类,那么我已经多年了。我还认为LiveCoding.tv的使用条款改变得太多了,一些材料消失了。除此之外,没有:)
for (auto vd : boost::make_iterator_range(adjacent_vertices(5, g)))
{
    std::cout << "vertex " << vd << " is an out-edge of vertex 5\n";
}
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/random.hpp>
#include <iostream>
#include <random>

int main() {
    boost::adjacency_list<> g;
    std::mt19937 rng { 42 };

    generate_random_graph(g, 10, 20, rng);

    for (auto vd : boost::make_iterator_range(adjacent_vertices(5, g)))
    {
        std::cout << "vertex " << vd << " is an out-edge of vertex 5\n";
    }
}
vertex 1 is an out-edge of vertex 5
vertex 6 is an out-edge of vertex 5
for (auto vd : boost::make_iterator_range(vertices(g)))
    std::cout << "vertex #" << vd << " has out_degree: " << out_degree(vd, g) << "\n";