boost::graph : независимый от реализации способ получения преимущества от пары вершин

Я просмотрел концепции графа Boost, но он не предоставляет никакого интерфейса для получения любого ребра из пары по вершинам. Я пытался:

boost::graph_traits<G>::edge_descriptor edge(u, v); // does not work

но для этого требуется дополнительный указатель на тип свойства. Как я могу это получить?


person Vikas    schedule 18.07.2013    source источник


Ответы (1)


Третий параметр для boost::edge() — это ваш график.

Также обратите внимание, что функция возвращает не дескриптор ребра напрямую, а пару, содержащую дескриптор ребра и логическое значение, зависящее от существования ребра.

Что-то вроде этого:

G myGraph;   // construct the graph
....         // populate it
....         // select a pair of vertices u, v

// get the edge between the vertices, if it exists
typedef boost::graph_traits<G>::edge_descriptor edge_t;
edge_t found_edge;
std::pair < edge_t, bool > p = boost::edge( u, v, myGraph ); 
if( ! p.second) {
   // edge does not exist
   ...
} else {
   found_edge = p.first;
   ...
}
person ravenspoint    schedule 19.07.2013