Я не уверен, что понимаю ваш вопрос. Вот несколько советов, которые могут вам помочь:
boost :: property_map, который вы использовали для определения WeightMap, требует, чтобы вы добавили соответствующее свойство в свой график (вы сделали только половину того, что нужно, определив DistanceProperty):
typedef boost::property<boost::edge_weight_t, float> DistanceProperty;
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirS, boost::no_property, DistanceProperty> MyGraph;
Если это не было сделано, boost :: property_map в любом случае вам не поможет.
Если вы не хотите добавлять разные весовые свойства для каждой схемы, которую хотите попробовать, альтернативой является определение таких свойств вне определения графа. Это может быть сделано
- используя std :: map и boost :: associative_property (что довольно просто, но имеет эффективность карты)
- используя boost :: vector_property_map , который более эффективен (благодаря лежащему в основе std :: vector), но требует идентификатора property_map, то есть property_map, который может извлекать числовой идентификатор (в идеале между 0 и num_edges () - 1 ) от предоставленного края. Это свойство_карты обычно определяется в графе.
Если мой ответ не поможет вам (или недостаточно), пожалуйста, будьте немного точнее в своем вопросе, чтобы я мог обновить свой ответ!