Boost logo

Boost Users :

Subject: [Boost-users] [BGL] problem about copy graph
From: Li Ning (Ning.c.Li_at_[hidden])
Date: 2009-06-08 06:08:10


typedef adjacency_list<vecS, vecS, undirectedS, no_property, edge_ex>
graph_t;

typedef graph_traits<graph_t>::vertex_descriptor vertex_t;
typedef graph_traits<graph_t>::edge_descriptor edge_t;

struct edge_ex
{
        //int index;
        bw_t az_capacity;
        bw_t za_capacity;
        int cost;
        vertex_t fake_source;
};
// init a graph g and assign edge_ex values, and get a std::pair<edge_t,
bool> r when add_edge(5,6,g);
graph_t g2 = g;
std::pair<edge_t, bool> rr = edge(5,6,g2);
g2[rr.first].cost = 1000;

std::cout<<g[r.first].cost<<" "<<g2[r.first].cost<<" "<<g2[rr.first];

//output is: old_value old_value 1000

WHY??
It seems a bug, g2[r.first] should be 1000 rather than the value assign to g
even r.first is a descriptor that belongs to g
OK, this is problematic usage, but... g2[r.first] works, it doesn't make
sense.

-- 
View this message in context: http://www.nabble.com/-BGL--problem-about-copy-graph-tp23921384p23921384.html
Sent from the Boost - Users mailing list archive at Nabble.com.

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