## VertexListGraph

VertexListGraph コンセプトは、Graph コンセプトを精製し、グラフ中の全ての頂点の 効率的な巡回に必要とされるものを付け加えている。

### Refinement of

Graph

### Associated Types

`boost::graph_traits<G>::traversal_category` このタグ型は `vertex_list_graph_tag` に変換可能でなければならない。
`boost::graph_traits<G>::vertex_iterator` `vertices(g)` を経由して得られる頂点イテレータはグラフ中の全ての頂点 へのアクセスを提供する。頂点イテレータの型は MultiPassInputIterator の要求を満たしていなければならない。頂点イテレータの値型はグラフの頂点記述子 型でなければならない。
`boost::graph_traits<G>::vertices_size_type` グラフ中の頂点の数を表すのに使われる符号無し汎整数型。

### Valid Expressions

名前 | 式 | 返却値型 | 説明
--- | --- | --- | ---
グラフの頂点集合 | `vertices(g)` | `std::pair<vertex_iterator, vertex_iterator>` | グラフ `g` 中の全ての頂点へのアクセスを提供するイテレータ範囲を返す。
グラフ中の頂点の数 | `num_vertices(g)` | `vertices_size_type` | グラフ `g` 中の頂点の数を返す。

### Complexity guarantees

`vertices()` 関数は定数時間内に終了するはずである。

### See Also

Graph concepts

### Design Rationale

このコンセプトのデザイン中の一つの問題点は、 IncidenceGraph コンセプトと AdjacencyGraph コンセプトのどちらからの 精製を含むべきかという事である。グラフの頂点を巡回する能力は、出辺の巡回 と直交する。従って頂点の巡回を含んでいるだけの VertexListGraph コンセプトを 持つ事は意味があるだろう。しかしながらそのようなコンセプトはもはや実際には グラフでなくて、まさに集合であろう。そしてSTLは既にそのようなものを扱う コンセプトを持っている。しかし、頂点やグラフの出辺を巡回する必要のある BGLアルゴリズムが数多く存在する。従って便宜のために これらの要求を一まとめにするコンセプト、つまり VertexListGraph コンセプトが必要である。

### Concept Checking Class

      template <class G>
      struct VertexListGraphConcept
      {
        typedef typename boost::graph_traits<G>::vertex_iterator
          vertex_iterator;
        void constraints() {
          function_requires< IncidenceGraphConcept<G> >();
          function_requires< AdjacencyGraphConcept<G> >();
          function_requires< MultiPassInputIteratorConcept<vertex_iterator> >();

          p = vertices(g);
          V = num_vertices(g);
          v = *p.first;
          const_constraints(g);
        }
        void const_constraints(const G& g) {
          p = vertices(g);
          V = num_vertices(g);
          v = *p.first;
        }
        std::pair<vertex_iterator, vertex_iterator> p;
        typename boost::graph_traits<G>::vertex_descriptor v;
        typename boost::graph_traits<G>::vertices_size_type V;
        G g;
      };

Copyright © 2000-2001 | Jeremy Siek, Indiana University (jsiek@osl.iu.edu)

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

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