fork(10) download
  1. #include "boost/graph/graphviz.hpp"
  2.  
  3. struct myVertex_t {
  4. int color;
  5. };
  6.  
  7. typedef boost::adjacency_list<
  8. boost::vecS, // edge container
  9. boost::vecS, // vertex container
  10. boost::undirectedS, // type of graph
  11. myVertex_t, // vertex properties
  12. boost::property< // edge properties
  13. boost::edge_color_t, // ???
  14. boost::default_color_type // enum, holds 5 colors
  15. >
  16. > myGraph_t;
  17.  
  18. template<typename graph_t, typename vertex_t>
  19. void RenderGraph( const graph_t& g )
  20. {
  21. boost::dynamic_properties dp;
  22. dp.property( "color", boost::get( &vertex_t::color, g ) );
  23. dp.property( "node_id", boost::get( boost::vertex_index, g ) );
  24. boost::write_graphviz_dp( std::cout, g, dp );
  25. }
  26.  
  27. int main()
  28. {
  29. myGraph_t g;
  30. boost::add_edge(0, 1, g);
  31.  
  32. myGraph_t::vertex_iterator it = vertices(g).first;
  33. g[*it++].color = 42;
  34. g[*it++].color = 43;
  35.  
  36. RenderGraph<myGraph_t,myVertex_t>( g );
  37. }
  38.  
  39.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
In file included from /usr/include/boost/graph/graphviz.hpp:19:0,
                 from prog.cpp:1:
/usr/include/boost/property_map/property_map.hpp: In instantiation of 'void boost::put(const boost::put_get_helper<Reference, PropertyMap>&, K, const V&) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>; Reference = const int&; K = unsigned int; V = int]':
/usr/include/boost/property_map/dynamic_property_map.hpp:151:10:   required from 'void boost::detail::dynamic_property_map_adaptor<PropertyMap>::do_put(const boost::any&, const boost::any&, mpl_::bool_<true>) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>]'
/usr/include/boost/property_map/dynamic_property_map.hpp:186:11:   required from 'void boost::detail::dynamic_property_map_adaptor<PropertyMap>::put(const boost::any&, const boost::any&) [with PropertyMap = boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>]'
prog.cpp:37:1:   required from here
/usr/include/boost/property_map/property_map.hpp:364:44: error: assignment of read-only location '(&((const boost::vec_adj_list_vertex_property_map<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>&)pa))->boost::vec_adj_list_vertex_property_map<Graph, GraphPtr, ValueType, Reference, Tag>::operator[]<boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >, const boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, myVertex_t, boost::property<boost::edge_color_t, boost::default_color_type> >*, int, const int&, int myVertex_t::*>(k)'
     static_cast<const PropertyMap&>(pa)[k] = v;
                                            ^
stdout
Standard output is empty