У меня есть график повышения, определенный как
typedef boost::adjacency_list<boost::setS, boost::listS,
boost::undirectedS, CoordNode, CoordSegment> BGraph;
typedef boost::graph_traits<BGraph>::vertex_descriptor VertexDesc;
BGraph _graph;
и я хочу знать связанные компоненты одного и того же графа с
int num = boost::connected_components(_graph, propMap);
Я уже пытался создать требуемую карту свойств с возможностью записи (propMap) с помощью
typedef std::map<VertexDesc, size_t> IndexMap;
IndexMap mapIndex;
boost::associative_property_map<IndexMap> propMap(mapIndex);
VertexIterator di, dj;
boost::tie(di, dj) = boost::vertices(_graph);
for(di; di != dj; ++di){
boost::put(propMap, (*di), 0);
}
но это не работает; Я получаю ошибки компиляции.
Если бы контейнером вершин был vecS, было бы проще, потому что было бы достаточно простого массива или вектора. Но что я должен передать этой функции, если у меня есть listS в качестве контейнера вершин?
Как я могу создать необходимую карту свойств с возможностью записи? Может ли кто-нибудь привести мне пример?
connected_components
). Ваш propMap в порядке (хотя вам не нужно его инициализировать), вам просто нужно создать аналогичную индексную карту (эту нужно инициализировать) и передать ее алгоритму, используя именованные параметры. Вот пример. - person   schedule 15.03.2013