C++ Boost

edge_list<EdgeIterator, ValueType, DiffType>

edge_list クラスは辺イテレータのペアを EdgeListGraph をモデルとするクラスに変えるアダプタである。辺イテレータの value_typestd::pair (もしくは少なくとも first メンバと second メンバを持っている) でなければならない。ペアの first_typesecond_type は同じでなければならず、 それらはグラフの vertex_descriptor のために使われるだろう。 ValueTypeDiffType のテンプレート・パラメータは コンパイラが部分特殊化版をサポートしていない時にのみ必要である。そうでなければ デフォルトは正しい型になる。

Example

Bellman-Ford の最短経路アルゴリズムを edge_list に適用する。

  enum { u, v, x, y, z, N };
  char name[] = { 'u', 'v', 'x', 'y', 'z' };

  typedef std::pair<int,int> E;
  E edges[] = { E(u,y), E(u,x), E(u,v),
                E(v,u),
                E(x,y), E(x,v),
                E(y,v), E(y,z),
                E(z,u), E(z,x) };
  
  int weight[] = { -4, 8, 5,
                   -2,
                   9, -3,
                   7, 2,
                   6, 7 };

  typedef boost::edge_list<E*> Graph;
  Graph g(edges, edges + sizeof(edges) / sizeof(E));
    
  std::vector<int> distance(N, std::numeric_limits<short>::max());
  std::vector<int> parent(N,-1);
  
  distance[z] = 0;
  parent[z] = z;
  bool r = boost::bellman_ford_shortest_paths(g, int(N), weight,
                                              distance.begin(),
                                              parent.begin());
  if (r)  
    for (int i = 0; i < N; ++i)
      std::cout << name[i] << ": " << distance[i]
                << " " << name[parent[i]] << std::endl;
  else
    std::cout << "negative cycle" << std::endl;
出力は最短経路木中の根と各頂点の親からの距離になる。
  u: 2 v
  v: 4 x
  x: 7 z
  y: -2 u
  z: 0 z

Where Defined

boost/graph/edge_list.hpp

Template Parameters

パラメータ説明
EdgeIterator value_type が頂点記述子のペアである InputIterator のモデルでなければならない。
ValueType EdgeIteratorvalue_type
デフォルト: std::iterator_traits<EdgeIterator>::value_type
DiffType EdgeIteratordifference_type
デフォルト: std::iterator_traits<EdgeIterator>::difference_type

Model of

EdgeListGraph

Associated Types


boost::graph_traits<edge_list>::vertex_descriptor

edge_list に結びつけられた頂点記述子のための型。 これは std::iterator_traits<EdgeIterator>::value_type::first_type と同じ型であるだろう。
boost::graph_traits<edge_list>::edge_descriptor

edge_list に結びつけられた辺記述子のための型。
boost::graph_traits<edge_list>::edge_iterator

edges() によって返されるイテレータのための型。edge_iterator のイテレータの種類は EdgeIterator のそれと同じであるだろう。

Member Functions


edge_list(EdgeIterator first, EdgeIterator last)

範囲 [first,last) で与えられる辺リストで指定された n 個の頂点と辺からなるグラフ・オブジェクトを作成する。

Non-Member Functions


std::pair<edge_iterator, edge_iterator>
edges(const edge_list& g)


グラフ g の辺集合へのアクセスを提供するイテレータ範囲を返す。
vertex_descriptor
source(edge_descriptor e, const edge_list& g)


e の始点を返す。
vertex_descriptor
target(edge_descriptor e, const edge_list& g)


e の終点を返す。


Copyright © 2000-2001 Jeremy Siek, Indiana University (jsiek@osl.iu.edu)
Lie-Quan Lee, Indiana University (llee@cs.indiana.edu)
Andrew Lumsdaine, Indiana University (lums@osl.iu.edu)

Japanese Translation Copyright © 2003 Takashi Itou
オリジナルの、及びこの著作権表示が全ての複製の中に現れる限り、この文書の複製、利用、変更、販売そして配布を認める。このドキュメントは「あるがまま」に提供されており、いかなる明示的、暗黙的保証も行わない。また、いかなる目的に対しても、その利用が適していることを関知しない。

このドキュメントの対象: Boost Version 1.29.0
最新版ドキュメント (英語)