## PropertyGraph

PropertyGraph はグラフ中の頂点または辺の各々に関連したいくつかのプロパティを 持つグラフである。与えられたグラフが各頂点または各辺に関連したいくつかの プロパティを持っている事がある時に、タグはどのプロパティがアクセスされて いるか確認するために使われる。グラフはプロパティ・マップ・オブジェクトを 返す関数を提供する。

### Refinement of

Graph

### Notation

`G` | PropertyGraph のモデルの型。
`g` | 型 `G` のオブジェクト。
`X` | 頂点または `G` のための辺記述子型のどちらか一方。
`x` | 型 `X` のオブジェクト。
`Map` | 型 `boost::property_map<G, Property>::const_type`。
`v` | 型 `boost::property_traits<Map>::value_type` のオブジェクト。
`PropertyTag` | PropertyTag コンセプトをモデルとした型。
`p` | 型 `PropertyTag` のオブジェクト。
`pmap` | 型 `Map` のオブジェクト。

### Associated types

    boost::property_map<G, PropertyTag>::type
`PropertyTag` によって指定されるプロパティのためのプロパティ・マップの 型。この型はグラフの頂点または記述子型と同じキー型を持つ ReadWritePropertyMap のモデルでなければならない。
    boost::property_map<G, PropertyTag>::const_type
`PropertyTag` によって指定されるプロパティのための const プロパティ・マップの型。この型はグラフの頂点または辺記述子型と同じキー型を持つ ReadablePropertyMap のモデルでなければならない。

### Valid Expressions

`get(p, g)` | `PropertyTag` 型によって指定されるプロパティのためのプロパティ・マップ を返す。オブジェクト `p` は型を伝えるために使われるだけである。 返却値型: `g` が変更可能ならば `boost::property_map<G, PropertyTag>::type` で、そうでなければ `boost::property_map<G, PropertyTag>::const_type`。
`get(p, g, x)` | オブジェクト `x` (頂点または辺) に関連した、`PropertyTag` 型 によって指定されるプロパティ型を返す。オブジェクト `p` は型を 伝えるために使われるだけである。 この関数は次と同義である: `get(get(p, g), x)` 返却値型: `boost::property_traits<Map>::value_type`
`put(p, g, x, v)` | オブジェクト `x` (頂点または辺) に関連した、`PropertyTag` 型 によって指定されるプロパティを値 `v` に設定する。オブジェクト `p` は型を伝えるために使われるだけである。 この関数は次と同義である: `pmap = get(p, g); put(pmap, x, v)` 返却値型: `void`

### Complexity

`get()` プロパティ・マップ関数は定数時間のはずである。

### Models

- `adjacency_list` ここに `VertexProperty=property<vertex_distance_t,int,property<vertex_in_degree_t,int> >` かつ `PropertyTag=vertex_distance_t`。
- `adjacency_list` ここに `VertexPropertyTag=property<vertex_distance_t,int,property<vertex_in_degree_t,int> >` かつ `PropertyTag=vertex_in_degree_t`。

### Concept Checking Class

      template <class Graph, class X, class PropertyTag>
      struct PropertyGraphConcept
      {
        typedef typename property_map<G, PropertyTag>::type Map;
        typedef typename property_map<G, PropertyTag>::const_type const_Map;
        void constraints() {
          function_requires< GraphConcept<G> >();
          function_requires< ReadWritePropertyMapConcept<Map, X> >();
          function_requires< ReadablePropertyMapConcept<const_Map, X> >();

          Map pmap = get(PropertyTag(), g);
          pval = get(PropertyTag(), g, x);
          put(PropertyTag(), g, x, pval);
          ignore_unused_variable_warning(pmap);
        }
        void const_constraints(const G& g) {
          const_Map pmap = get(PropertyTag(), g);
          pval = get(PropertyTag(), g, x);
          ignore_unused_variable_warning(pmap);
        }
        G g;
        X x;
        typename property_traits<Map>::value_type pval;
      };

### See Also

`property_map`

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

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

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