2009-10-09 35 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; 
相關問題