我无法理解这个功能的文档,我已经多次看到以下
tie (ei,ei_end) = out_edges(*(vi+a),g);
**g**<-graph
**vi**<-beginning vertex of graph
**a**<- a node
**ei and ei_end** <- edge iterators
该函数返回什么,它做了什么,我什么时候可以使用?
我可以找到节点的所有边缘吗?
答案 0 :(得分:6)
提供迭代器,以迭代图u
中节点g
的外出边缘,例如:
typename graph_traits < Graph >::out_edge_iterator ei, ei_end;
for (boost::tie(ei, ei_end) = out_edges(u, g); ei != ei_end; ++ei) {
auto source = boost::source ( *ei, g );
auto target = boost::target ( *ei, g );
std::cout << "There is an edge from " << source << " to " << target << std::endl;
}
其中Graph
是图表的类型定义,g
是其中的一个实例。但是,out_edges
仅适用于具有有向边的图。与out_edges
相反的是in_edges
,它为您提供了计算节点进入边缘的迭代器。
在无向图中,out_edges
和in_edges
都将返回连接到相关节点的所有边。
但是,可以在http://www.boost.org/doc/libs/1_55_0/libs/graph/doc/graph_concepts.html或 Boost.Graph 示例/测试中轻松找到更多信息。
答案 1 :(得分:0)
如上所述,对于directed
图,out_edges
接受“ vertex_descriptor和要检查的图(邻接列表)”并返回“发出给定(指向)给定值的所有边vertex_descriptor”,通过迭代器范围。
如https://www.boost.org/doc/libs/1_69_0/libs/graph/doc/adjacency_list.html
中所述std::pair<out_edge_iterator, out_edge_iterator>
out_edges(vertex_descriptor u, const adjacency_list& g)
返回一个迭代器范围,该范围提供对顶点边缘的访问 图g中的u。如果图形是无向的,则此迭代器范围提供 访问入射在顶点u上的所有边。对于定向和 无向图,对于边缘e,source(e,g)== u和target(e, g)== v,其中v是与u相邻的顶点。
简而言之,要回答您的一些问题,