Boost logo

Boost Users :

From: Eric Fowler (eric.fowler_at_[hidden])
Date: 2008-01-11 03:07:50


Hate to keep peppering the list with these, but I am stuck:
In the Kevin Bacon sample, there appears this fragment:
// Convenience function

 template <typename DistanceMap>
 bacon_number_recorder<DistanceMap>
 record_bacon_number(DistanceMap d)
 {
 return bacon_number_recorder<DistanceMap>(d);
 }

Which is used thus:

 std::vector<int> bacon_number(num_vertices(g));

 breadth_first_search(g, src, visitor(record_bacon_number(&bacon_number[0])));

I am puzzled about the convenience function ... why use it at all?

But when I take it out:

vector<int> numbers(num_vertices(g));
          
          numbers[s] = 0;
          breadth_first_search(g, s, visitor(my_distance_recorder<vector<int>
>(numbers)));

All entries for vector<int> numbers are zero.

I changed the declaration for the recorder's ctor to look like this:

my_distance_recorder(Map& _m):m(_m){};

Making it get a reference to that vector, because I assumed I was
recording into a local copy that was being thrown away. No dice, still
zeroes.

My "graph" is a straight line of v---v---v---v---v---etc. for
simplicity, so I should be seeing a bfs count of 0, 1, 2, 3, etc. The
visitor function is being called and is writing incremented values
into the vector - but when it comes back, all are zero.

What's going on? The convenience function must be related to this
problem but I don't see the connection.

Eric

Also noticed that:
breadth_first_search(g, s, visitor(my_distance_recorder<vector<int>
>(&numbers[0])));

for

breadth_first_search(g, s, visitor(my_distance_recorder<vector<int>
>(numbers)));

gets a compile time error.


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