Boost logo

Boost Users :

Subject: Re: [Boost-users] (no subject)
From: Cedric Laczny (cedric.laczny_at_[hidden])
Date: 2011-04-06 16:20:24


Sorry, I have to correct my last post.
The Segmentation Fault was due to modifications from me in the code and I
simply missed something there thus causing the error. My apologies.
Nevertheless, I will still have a deeper look at it.

Best,

Cedric

On Wednesday, 6. April 2011 12:55:52 Gabriel Marchand wrote:
> Hi, I am new to boost and I face the same problem mentioned here with
> "connected_components()" using a mutable graph (hence using a list for the
> vertex container). I try the detailed solution of Aaron Windsor in the
> previous post but I still get some errors at compilation. Here is my
> little code:
>
>
>
> #include <boost/graph/adjacency_list.hpp>
> #include <boost/graph/connected_components.hpp>
>
> using namespace std;
> using namespace boost;
>
> Box& b = conf.GetBox();
>
>
> if (!ai) {
> ai = new AtomList();
> *ai = conf.GetAtoms().AtomSelector(selecti, b);
> }
>
> typedef boost::adjacency_list<
> listS,
> listS,
> undirectedS,
> property<vertex_index_t, size_t>,
> no_property>
>
> > graph_t;
>
> graph_t g(ai->size());
> property_map<graph_t, vertex_index_t>::type index = get(vertex_index,
> g); graph_traits<graph_t>::vertex_iterator vi, vi_end;
> graph_traits<graph_t>::vertices_size_type cnt = 0;
> for(tie(vi,vi_end) = vertices(g); vi != vi_end; ++vi)
> put(index, *vi, cnt++);
>
> for (unsigned int i = 0; i < ai->size(); ++i) {
> Cartesian& crdi = ai->GetElement(i)->pos;
> for (unsigned int j = i + 1; j < ai->size(); ++j) {
> Cartesian& crdj = ai->GetElement(j)->pos;
> double r = conf.GetBox().CartesianDistance(crdi, crdj);
> if (r < rcut) {
> add_edge(vertex(i,g), vertex(j,g), g); // Add edge to Map
> if distance criteria is satisfied
>
> }
> }
> }
>
> vector<int> component(num_vertices(g));
> int num_clusters = connected_components(g, &component[0],
> vertex_index_map(index));
>
>
>
>
> The compilation is successfull until I add the last line:
> int num_clusters = connected_components(g, &component[0],
> vertex_index_map(index));
>
>
> Hope somebody can give a hint
> gabriel


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