1

给定定义:

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); 的语义感兴趣

在 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 定义...

4

1 回答 1

1

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

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;
于 2009-12-15T15:16:14.607 回答