Boost logo

Boost :

From: Rob Smallshire (robert_at_[hidden])
Date: 2001-07-24 10:23:26

I have two questions regarding the connected_components() algorithm
in the BGL when using MSVC6.0sp5


Q1. First of all using an external property map to store the
component number for each vertex...

std::vector<int> component(boost::num_vertices(G));
int num = boost::connected_components(G, &component[0]);

The code above, which is copied almost verbatim from
boost/graph/connected_components.hpp into my program

gives the following error message:

(185) : error C2664: 'void __cdecl boost::put(int *,int,
const int &)' : cannot convert parameter 2 from 'void *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or
function-style cast C:/users/rob/dev/utils/boost/boost_1_22_0
\boost/property_map.hpp(183) : while compiling class-template member
function 'void __thiscall boost::WritablePropertyMapConcept<int
*,void *>::constraints(void)'

Any suggestions as to why this is so would be useful.


Q2. Rather than using an arbitrary combination of internal and
external property maps for my graph I'd like to be consistent and use
internal property maps. I have created a new property for the
component number :

struct component_t
   enum { num = 4564 };
   typedef boost::vertex_property_tag kind;

typedef boost::property<component_t, int, VertexSetProperty>


typedef boost::property_map<Graph, component_t>::type

and later in the code I get a property map object using:

ComponentPropertyMap component = boost::get(component_t(), G);

I then want to write something like:

int num = boost::connected_components(G, component);

but I can't seem to get the syntax right. Is it possible to use an
internal property map in this way ?

Thanks in advance for any help with either of these questions.

Rob Smallshire

Boost list run by bdawes at, gregod at, cpdaniel at, john at