|
Boost Users : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-02-28 08:59:50
Doug Gregor <dgregor_at_[hidden]> writes:
> On Feb 27, 2006, at 2:33 PM, David E. Konerding wrote:
>> Here's what I see:
>> new v1= <boost.graph._graph.Vertex object at 0x40168a04>
>> new v2= <boost.graph._graph.Vertex object at 0x40168aac>
>> new edge= <boost.graph._graph.Edge object at 0x40164dec>
>> vertex: <boost.graph._graph.Vertex object at 0x40168ae4>
>> vertex: <boost.graph._graph.Vertex object at 0x40168b54>
>> edge: <boost.graph._graph.Edge object at 0x40164d6c>
>> edge source: <boost.graph._graph.Vertex object at 0x40168ae4>
>>
>> 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
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