|
Boost Users : |
Subject: Re: [Boost-users] [BGL] Remove edge
From: Michael Olea (oleaj_at_[hidden])
Date: 2009-02-17 16:26:20
On Feb 16, 2009, at 11:37 PM, Gianni Loiacono wrote:
> Hi Mr. Michael Olea,
> thanks for the replay, for the example code and for the help :-)
> I have tested your code and it works perfectly.
> But I have a problem, my graph isn't static but dynamic.
> In fact, the arcs weights are assigned dynamicaly and I don't
> understand how to adapt your code to my code.
> Can you help me?
> Sorry for my poor english,
> Best regards.
Ciao, signore Gianni Loiacono.
It does not matter that the arc weights are assigned dynamically;
what matters is that when deleteEdges is called they are stored in a
property map that you have called "capacityCut". So, using the
"Remover" class from ex_remove_if.cpp, you could write deleteEdges
something like this:
void deleteEdges()
{
Remover< property_map<Graph, edge_capacity_t>::type > r
(capacityCut, 10);
remove_edge_if(r, g);
}
However, if removing edges is a frequent operation, you might get
better performance if you use an std::list rather than an std::vector
to store edges. That is, replace this statement:
typedef adjacency_list<vecS, vecS, undirectedS,
NodoProperty, ArcoProperty> Graph;
with this statement:
typedef adjacency_list<listS, vecS, undirectedS,
NodoProperty, ArcoProperty> Graph;
Good luck,
-- Michael
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net