Я использую адаптер adjacency_list и subgraph для создания моего типа графика.Как получить доступ к свойствам подстроки подграфа?
#include <boost/graph/subgraph.hpp>
#include <boost/graph/adjacency_list.hpp>
struct VertexProperties
{
bool bIsExpandable;
string sId;
string sCoord_X;
string sCoord_Y;
std::size_t order;
};
struct EdgeProperties
{
string sId;
bool bBidirectional;
};
//Graph properties
enum graph_index_t {graph_index=111};
namespace boost{
BOOST_INSTALL_PROPERTY(graph,index);
}
typedef boost::property<boost::vertex_index_t, std::size_t , VertexProperties> vertex_prop;
typedef boost::property<boost::edge_index_t, std::size_t , EdgeProperties> edge_prop;
typedef boost::property<graph_index_t, std::size_t> graph_prop;
typedef boost::adjacency_list<
boost::listS,
boost::vecS,
boost::bidirectionalS,
vertex_prop ,
edge_prop,
graph_prop>
Graph;
typedef boost::subgraph<Graph> Subgraph;
Я использую связанные свойства для вершин и ребер. Я попытался передать свойство bundled в 'graph', для adjacency_list он отлично работает, но не может быть использован для адаптера subgraph, я обнаружил, что он не поддерживается адаптером подзаголовка boost. Поэтому я добавил graph_index_t в свойства графика, но я не могу получить к нему доступ. Я написал следующую карту свойств для доступа к ней, но кажется, что это не правильный путь.
typedef property_map<Subgraph , graph_index_t>::type GraphIndexPropertyMap;
Это дает ошибку в adjacency_list.hpp
d:\boost_1_53_0\boost\graph\detail\adjacency_list.hpp:2543: error: forming reference to void
Я проверил подталкивание 1,53 документации, но не может найти путь, связанный с этим.
Так что у меня 2 вопроса:
1) Как получить доступ к свойству graph_index чтение-запись?
2) Могу ли я использовать связанное свойство для «графа» с подграфом boost каким-то образом?
Может ли кто-нибудь помочь?
Спасибо,
Pratik