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