[BGL] Graph syntax from Boost 1_31
Because of compiler issues, and reasons too numerous to be listed here, for this problem I'm currently stuck using MSVC 7.1, with the Boost Graph Library 1_31. I'm having a syntax problem that I thought someone could help me with. I'm trying to use the graph coloring algorithm by calling sequential_vertex_coloring. In version 1_31, the function signature look like the following: template <class VertexListGraph, class OrderPA, class ColorMap> typename graph_traits<VertexListGraph>::size_type sequential_vertex_coloring(const VertexListGraph& G, OrderPA order, ColorMap color) ; I'm not entirely certain what the OrderPA is supposed to be. I could see in Boost version 1_33, there was a convenience function that automatically created the 'order' argument. So I tried using that, but I got the following error: main.cpp(31) : error C2893: Failed to specialize function template 'graph_traits<VertexListGraph>::size_type boost::sequential_vertex_coloring(const VertexListGraph &,OrderPA,ColorMap)' With the following template arguments: 'Graph' 'boost::iterator_property_map<RandomAccessIterator,IndexMap,T,R>' Can somene tell me what I'm missing or doing wrong? Much appreciated. I've enclosed the code below. ----------------------------------------------------------- #include <boost/graph/adjacency_list.hpp> #include <boost/graph/sequential_vertex_coloring.hpp> template<class VertexListGraph, class ColorMap> typename boost::property_traits<ColorMap>::value_type sequential_vertex_coloring(const VertexListGraph& G, ColorMap color) { typedef typename boost::graph_traits<VertexListGraph>::vertex_descriptor vertex_descriptor; typedef typename boost::graph_traits<VertexListGraph>::vertex_iterator vertex_iterator; std::pair<vertex_iterator, vertex_iterator> v = vertices(G); #ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS std::vector<vertex_descriptor> order(v.first, v.second); #else std::vector<vertex_descriptor> order; order.reserve(std::distance(v.first, v.second)); while (v.first != v.second) order.push_back(*v.first++); #endif return boost::sequential_vertex_coloring (G, boost::make_iterator_property_map (order.begin(), boost::identity_property_map(), boost::graph_traits<VertexListGraph>::null_vertex()), color); } typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS> Graph; typedef boost::graph_traits<Graph>::vertex_descriptor vert_descriptor; typedef boost::graph_traits<Graph>::vertex_iterator vert_iterator; typedef boost::graph_traits<Graph>::vertices_size_type vert_size_type; typedef boost::property_map<Graph, boost::vertex_index_t>::const_type vert_index_map; int main(int argc, char **argv) { Graph g(5); boost::add_edge(0, 1, g); boost::add_edge(0, 2, g); boost::add_edge(1, 2, g); std::vector<vert_size_type> color_vec(5); boost::iterator_property_map<vert_size_type*, vert_index_map> color(&color_vec.front(), get(boost::vertex_index, g)); vert_size_type num_colors = sequential_vertex_coloring (g, color); return 0; } --------------------------------- Be a better sports nut! Let your teams follow you with Yahoo Mobile. Try it now.
participants (1)
-
Lucio Flores