Как получить тип свойства в Boost Graph Library - PullRequest
0 голосов
/ 10 июня 2018

В Boost Graph Library (BGL), как я могу программно получить тип свойства, такого как свойство, связанное с boost::edge_weight_t?

Я искал и нашел много примеров того, как получить тип карты свойств , но не тип самого свойства.Например, документация BGL ниже имеет тип карты свойств для edge_weight_t как property_map<DirectedGraph, edge_weight_t>::type:

typedef ... DirectedGraph;
DirectedGraph digraph(V);
{
  ..
  property_map<DirectedGraph, edge_weight_t>::type
    weight = get(edge_weight, digraph);
}

Но как мне получить тип веса ребер?(float, int и т. Д.)

Как объявить переменные для весов ребер с соответствующими выражениями типов (см. Ниже), чтобы я мог, например, прочитать эти значения весов изфайл / поток.

typedef ... DirectedGraph;
...
??? w;
input_s >> w;

1 Ответ

0 голосов
/ 10 июня 2018

Как указано в комментариях @llonesmiz, для типа карты свойств

typedef property_map<Graph, boost::edge_weight_t>::type WeightMap

тип значения свойства (веса) можно получить с помощью property_traits как:

typedef typename boost::property_traits<WeightMap>::value_type edge_weight_type;
...