PropertyGraph
A PropertyGraph is a graph that has some property associated with each
of the vertices or edges in the graph. As a given graph may have
several properties associated with each vertex or edge, a tag is used
to identity which property is being accessed. The graph provides a
function which returns a property map object.
Refinement of
Graph
Notation
G |
A type that is a model of PropertyGraph. |
g |
An object of type G. |
X |
Either the vertex or edge descriptor type for G. |
x |
An object of type X. |
Map |
The type boost::property_map<G, Property>::const_type. |
v |
An object of type boost::property_traits<Map>::value_type. |
PropertyTag |
A type that models the PropertyTag concept. |
p |
An object of type PropertyTag. |
pmap |
An object of type Map. |
Associated types
boost::property_map<G, PropertyTag>::type
The type of the property map for the property specified by
PropertyTag. This type must be a model of ReadWritePropertyMap
with a key type the same as the graph's vertex or edge descriptor type.
|
boost::property_map<G, PropertyTag>::const_type
The type of the const property map for the property specified by
PropertyTag. This type must be a model of ReadablePropertyMap
with a key type the same as the graph's vertex or edge descriptor type.
|
Valid Expressions
get(p, g) |
Returns the property map for the property specified by the
PropertyTag type. The object p is only used to
carry the type.
Return type: boost::property_map<G, PropertyTag>::type if g is mutable and boost::property_map<G, PropertyTag>::const_type otherwise.
|
get(p, g, x) |
Returns the property value (specified by the PropertyTag type)
associated with object x (a vertex or edge).
The object p is only used to carry the type.
This function is equivalent to:
get(get(p, g), x)
Return type: boost::property_traits<Map>::value_type
|
put(p, g, x, v) |
Set the property (specified by the PropertyTag type)
associated with object x (a vertex or edge) to
the value v. The object p is only used to carry the type.
This function is equivalent to:
pmap = get(p, g);
put(pmap, x, v)
Return type: void
|
Complexity
The get() property map function must be constant time.
Models
- adjacency_list with VertexProperty=property<vertex_distance_t,int,property<vertex_in_degree_t,int> > and PropertyTag=vertex_distance_t.
- adjacency_list with VertexPropertyTag=property<vertex_distance_t,int,property<vertex_in_degree_t,int> > and 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
|