2009-10-09 12 views
1

Donné définitions:Quelqu'un peut-il poster un exemple de création d'un boost inv_adjacency_iterator en utilisant inv_adjacency_iterator_generator?

typedef nom de fichier boost :: graph_traits :: adjacency_iterator adjacency_iter;
typedef nom de fichier boost :: inv_adjacency_iterator_generator :: type inv_adjacency_iter;

Je suis intéressé par la sémantique de boost :: lien (i, fin) = inv_adjacent_vertices ((*), démarrage

adjacent_vertices fonctionne très bien où inv_adjacent_vertices échoue avec les éléments suivants:

erreur C2679: binaire ' = ': aucun opérateur trouvé qui prend un opérande de droite de type' const boost :: inv_adjacency_iterator '(ou il n'y a pas de conversion acceptable) C: \ boost_1_33_1 \ boost \ tuple \ detail \ tuple_basic.hpp 637 domaine

Tuple_basic.hpp définit adjacency_iterator en utilisant access_traits

inv_adjacency_iterator est définie en utilisant la inv_adjacency_iterator_generator ...

Répondre

1

d'abord définir un bord en iterator:

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

Ensuite, utilisez le InEdge Iterator dans le inv_adjacency_iterator_generator:

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

Enfin, définissez la plage des sommets pour la syntaxe boost :: tie au travail:

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