有人可以使用inv_adjacency_iterator_generator发布创建boost inv_adjacency_iterator的示例吗?

时间:2009-10-09 23:44:40

标签: list boost iterator inverse

给定定义:

typedef typename boost :: graph_traits :: adjacency_iterator adjacency_iter;
typedef typename boost :: inv_adjacency_iterator_generator :: type inv_adjacency_iter;

我对boost :: tie(i,end)= inv_adjacent_vertices((* start);

的语义感兴趣

adjacent_vertices在inv_adjacent_vertices失败时工作正常,具有以下内容:

错误C2679:二进制'=':找不到运算符,它采用'const boost :: inv_adjacency_iterator'类型的右手操作数(或者没有可接受的转换)C:\ boost_1_33_1 \ boost \ tuple \ detail \ tuple_basic .hpp 637域名

Tuple_basic.hpp使用access_traits定义adjacency_iterator。

使用inv_adjacency_iterator_generator定义inv_adjacency_iterator ...

1 个答案:

答案 0 :(得分:1)

首先定义一个in edge迭代器:

typedef typename boost::graph_traits<TGraphContainer>::in_edge_iterator TInEdgeIterator;

然后在inv_adjacency_iterator_generator中使用InEdge迭代器:

typedef typename boost::inv_adjacency_iterator_generator<TGraphContainer, TVertex, TInEdgeIterator>::type TInvAdjacencyIterator;

最后定义boost :: tie语法的顶点范围:

typedef std::pair<TInvAdjacencyIterator, TInvAdjacencyIterator> TInvAdjacencyVertexRangeType;