6

ですから、今日はBoostのドキュメントを1時間読んだに違いありません。私は盲目でなければなりません。簡単な質問があります。

boost :: adjacency_listを使用して、エッジに対応する頂点をどのように取得しますか?

私は私が理解しようとしている次のコードを持っています:

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Graph;
typedef boost::graph_traits<Graph>::edge_iterator EdgeIterator;
typedef std::pair<EdgeIterator, EdgeIterator> EdgePair;

EdgePair ep;
for (ep = edges(g); ep.first != ep.second; ++ep.first)
{
    // Get the two vertices that are joined by this edge...
}

誰もがこれを行う方法を知っていますか?

ありがとう

4

1 に答える 1

11

必要な関数は、このページ(「非メンバー関数」というセクション)にあります。必要なのはsourcetargetです。

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> Graph;
typedef boost::graph_traits<Graph>::edge_iterator EdgeIterator;
typedef std::pair<EdgeIterator, EdgeIterator> EdgePair;
typedef boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor;

EdgePair ep;
VertexDescriptor u,v;
for (ep = edges(g); ep.first != ep.second; ++ep.first)
{
    // Get the two vertices that are joined by this edge...
    u=source(*ep.first,g);
    v=target(*ep.first,g);
}
于 2012-08-17T06:58:36.547 に答える