## AdjacencyGraph

AdjacencyGraph コンセプトは、グラフ中の頂点への隣接頂点の効率的なアクセス のためのインターフェースを供給する。これは IncidenceGraph コンセプト (出辺の終点が隣接頂点である) とまことに良く似ている。 いくつかの状況では頂点への関心のみがあり、しかし一方他の状況では辺も同様に 重要になるため、両者のコンセプトが供給された。

### Refinement of

Graph

### Notation

`G` | グラフのモデルの型。
`g` | 型が `G` のオブジェクト。
`v` | 型が `boost::graph_traits<G>::vertex_descriptor` の オブジェクト。

### Associated Types

`boost::graph_traits<G>::traversal_category` このタグ型は `adjacency_graph_tag` に変換可能でなければならない。
    boost::graph_traits<G>::adjacency_iterator
頂点 v のための隣接イテレータは v に隣接した頂点へのアクセスを 提供する。そのため隣接イテレータの値型はそのグラフの頂点記述子型である。 隣接イテレータは MultiPassInputIterator の要求を満たしていなければならない。

### Valid Expressions

`adjacent_vertices(v, g)` | グラフ `g` 中の頂点 `v` に隣接している頂点へのアクセスを提供 するイテレータ範囲を返す。[1] 返却型: `std::pair<adjacency_iterator, adjacency_iterator>`

### Complexity guarantees

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

### See Also

Graph concepts, `adjacency_iterator`

### Concept Checking Class

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

          p = adjacent_vertices(v, g);
          v = *p.first;
          const_constraints(g);
        }
        void const_constraints(const G& g) {
          p = adjacent_vertices(v, g);
        }
        std::pair<adjacency_iterator,adjacency_iterator> p;
        typename boost::graph_traits<G>::vertex_descriptor v;
        G g;
      };

### Design Rationale

IncidenceGraph が同じ (それ以上の) 機能 を実際に含んでいるので、AdjacencyGraph コンセプトはいくぶん軽薄である。 `adjacent_vertices()` が `out_edges()` よりも使用すると便利な 状況があるので AdjacencyGraph コンセプトは存在する。 グラフ・クラスを構築しており、隣接イテレータを作成する余分な仕事を行いたくない 場合は、恐れを持たないでいただきたい。 出辺イテレータから隣接イテレータを作成するために使用できる`adjacency_iterator` と名付けられたアダプタ・クラスがある。

### Notes

[1]multigraph (多数の辺が同じ二つの頂点を接続できる) の 場合は、`adjacent_vertices()` 関数によって返されたイテレータが 各隣接頂点を一度含む範囲にアクセスするかどうか、また `out_edges()` 関数 のふるまいと一致し、二度以上隣接した頂点を含むことがある範囲にアクセスすべき かどうかとしての問題が持ち出される。 この決定はグラフ・アルゴリズムの実装と共により多くの経験を考慮して 再検討される必要があるかもしれないが、今のところふるまいは `out_edges()` のそれと一致すると定義される。

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

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

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