Doug Gregor
On Feb 27, 2006, at 2:33 PM, David E. Konerding wrote:
Here's what I see: new v1=
new v2= new edge= vertex: vertex: edge: edge source: As you can see, v1 and v2 return and have different addresses than the Vertex objects that are listed by the vertices iterator. My guess here is that the Vertex objects do point to the same underlying vertex in the C++ implementation of the graph.
Your guess is correct. We don't cache the Python objects corresponding to vertex and edge descriptors.
You probably don't want to pay this cost, but you might be able to make the behavior more predictable if you used shared_ptrs inside the C++ graph representation, since they will automatically retain the identity of the Python object wrappers. -- Dave Abrahams Boost Consulting www.boost-consulting.com