Я пытаюсь использовать топологическую функцию повышения.
Я использую boost :: adjacency_list с setS и listS в качестве основного хранилища для ребер и вершин.
typedef boost::adjacency_list<boost::setS, boost::listS, boost::bidirectionalS > SizerGraph;
SizerGraph sizerGraph;
typedef boost::graph_traits<SizerGraph>::vertex_descriptor Vertex;
boost::topological_sort(sizerGraph, std::ostream_iterator<Vertex>(std::cout, "\n"));
Компиляция приводит к ошибкам. (g ++ 3.4.6)
/ usr / include / boost / property_map.hpp: 349: ошибка: нет соответствия для
'оператор +' в '((const
boost :: iterator_property_map <__ gnu_cxx :: __ normal_iterator>>,
повышение :: adj_list_vertex_property_map,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>,
повышение :: default_color_type,
boost :: default_color_type &> *) this) -> boost :: iterator_property_map <__ gnu_cxx :: __ normal_iterator>>,
повышение :: adj_list_vertex_property_map,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>,
boost :: default_color_type, boost :: default_color_type &> :: iter +
boost :: get [with PropertyMap =
повышение :: adj_list_vertex_property_map,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>,
Ссылка = const boost :: detail :: error_property_not_found &, K =
void *] (((const boost :: put_get_helper,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>
&) ((const boost :: put_get_helper,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>
*) (((const boost :: adj_list_vertex_property_map,
boost :: detail :: error_property_not_found, const
повышение :: детали :: error_property_not_found и,
повышение :: vertex_index_t> *) ((Const
boost :: iterator_property_map <__ gnu_cxx :: __ normal_iterator>>,
повышение :: adj_list_vertex_property_map,
boost :: detail :: error_property_not_found, const
boost :: detail :: error_property_not_found &, boost :: vertex_index_t>,
boost :: default_color_type, boost :: default_color_type &> ) this)) +
8u))), ((void const &) ((void * const *) (& v)))) '
/ usr / include / boost / graph / detail / adjacency_list.hpp: 2264: ошибка: нет
функция сопоставления для вызова `get_property_value (boost :: no_property &,
повышение :: vertex_index_t)
Однако с использованием vecS в качестве основного механизма хранения для вершин приводит к чистой компиляции.
Мое использование списков для вершин нарушает какое-либо требование к понятию?