2009-10-09 44 views
1

鉴于定义:有人可以发布一个使用inv_adjacency_iterator_generator创建boost inv_adjacency_iterator的例子吗?

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

我感兴趣的boost ::领带(I,末)的语义= inv_adjacent_vertices((*启动);

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使用inv_adjacency_iterator_generator定义...

回答

1

首先在边缘迭代限定:

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

最后定义的范围内:

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

然后在inv_adjacency_iterator_generator使用InEdge迭代用于boost :: tie语法的顶点的工作:

typedef std::pair<TInvAdjacencyIterator, TInvAdjacencyIterator> TInvAdjacencyVertexRangeType; 
相关问题