Boost logo

Boost Users :

Subject: Re: [Boost-users] [graph] Convert bidirectional graphs into directed graphs
From: Juan Antonio Farré Basurte (jafb_at_[hidden])
Date: 2009-03-19 02:08:12

>> I need to convert any bidirectional graph into an
>> adjacency_list<vecS,vecS,directedS>,
>> but looks
like the copy constructor cannot handle it (needs the same type in input).
>> I don't see any simple way to convert any directed graph
into an adjacency_list<vecS,vecS,directedS>.
>> Is there any more-or-less-simple way to do it that I don't know? May be there is a
way to copy graphs constrained not by the concrete type of the graph,
>> but only, may be, on graph concepts?
>> Thanks,
> There's no direct conversion between *any* bidirectional graph and a directed adjancency_list. If you're talking about any
bidirectional adjacency list and a directed one, you shouldn't actually need to convert them.
> As an alternative, you could use

I need to do a copy of the graph before writing it into graphml or graphviz as a workaround
for the problem I
reported with subject

[graph] Looks like there is a bug in some graph-writing function

, which in my second message with the
same subject I clarified the problem was related with
creating dynamic_properties from bundled properties. It doesn't work with const graphs
and I don't trust just performing a const_cast. I want to make sure that the input graph to
my graph-writing functions is not modified at
One solution would be just to do

Graph *copy=new Graph(graph);

where Graph is the graph-type template parameter, but
this would require Graph to model
Assignable, and I don't want to impose that. Also, copying the graph into a directed
(not bidirectional)
adjacency_list will save memory.

copy_graph is perfect for my needs, as graph-writing boost functions already require the graph
model VertexListGraph (and, in general, the code I'm developing too).

Sorry for not remembering about copy_graph and thank you very much


Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at