Я использую adjacency_list и адаптер подграфа для создания своего типа графика.
#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;
Я использую связанные свойства для вершин и ребер. Я попытался указать связанное свойство для «графа», для adjacency_list он работает нормально, но не может использоваться для адаптера подграфа, я обнаружил, что он не поддерживается адаптером подграфа повышения. Поэтому я добавил 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
Я проверил документацию по boost 1.53, но не смог найти способ, связанный с этим.
Итак, у меня есть 2 вопроса:
1) Как получить доступ для чтения и записи к свойству graph_index?
2) Могу ли я каким-то образом использовать связанное свойство для «графа» с подграфом повышения?
Кто-нибудь может помочь?
Спасибо,
Пратик