
On Mon, May 31, 2010 at 1:09 PM, Arne Schwabe <arne@rfc2549.org> wrote:
Hi,
I trying to wrap my head about the usage of iterator_property_map<RandomAccessIterator, OffsetMap, T, R>
What I am trying to do is the following:
create a map like color with key a graph_node and value type of a struct like
struct foo { int numbervists; int color; }
so I can use that in a breadth first like algorithm. The example shows me how to do it for an int but do not know how to change
typedef boost::graph_traits<Graph>::edge_descriptor Edge;
typedef boost::property_map<Graph, boost::id_tag>::type EdgeID_PMap; EdgeID_PMap edge_id = get(boost::edge_index(), G);
boost::iterator_property_map<int*, EdgeID_PMap, int, int&> capacity_pa(capacity, edge_id), flow_pa(flow, edge_id);
to use foo instead of int. In my understanding, I would have to change int* to a RandomAccessIterator to to Iterator that has foo as value type. But I am kind of lost how to construct such a thing.
Arne
___
The following code sample should help you figure it out. #include <boost/property_map/property_map.hpp> #include <vector> struct Foo { int a; int b; }; using namespace boost ; int main() { int num_nodes = 10; std::vector<Foo> foo_store(num_nodes); typedef std::vector<Foo>::iterator FooVecIter; typedef iterator_property_map<FooVecIter, identity_property_map, Foo, Foo&
Foo_pmap_t; Foo_pmap_t dist_pmap(foo_store.begin(), identity_property_map());
} -Sandeep