<HTML>
<!--
     Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000
    
     Distributed under the Boost Software License, Version 1.0.
     (See accompanying file LICENSE_1_0.txt or copy at
     http://www.boost.org/LICENSE_1_0.txt)
  -->
<Head>
<Title>Boost Graph Library: Property Map Traits</Title>
<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 
        ALINK="#ff0000"> 
<IMG SRC="../../../boost.png" 
     ALT="C++ Boost" width="277" height="86"> 

<BR Clear>

<BR Clear>

<H1><A NAME=""></A>
<pre>
property_map&lt;<a href="./PropertyGraph.html">PropertyGraph</a>, <a href="./PropertyTag.html">PropertyTag</a>&gt;
</pre>
</H1>

This is the traits class that produces the type for a <a
href="../../property_map/doc/property_map.html">property map</a> object
for a particular graph type. The property is specified by the <a
href="./PropertyTag.html">PropertyTag</a> template parameter.  Graph classes
must specialize this traits class to provide their own implementation
for property maps.

<pre>
  template &lt;class Graph, class PropertyTag&gt;
  struct property_map {
    typedef ... type;
    typedef ... const_type;
  };
</pre>

<h3>Where Defined</h3>

<a href="../../../boost/graph/properties.hpp"><tt>boost/graph/properties.hpp</tt></a>

<h3>Associated Types</h3>

<table border>

<tr>
<td>Map Type</td>
<td><TT>type</TT> </td>
<td>
The (mutable) property map type for mapping vertex or edge desriptors of
the graph to their associated property values, where the property is
specified by <tt>PropertyTag</tt>. This type is a <a
href="../../property_map/doc/property_map.html">property map</a>.
</tr>

<tr>
<td>Const Map Type</td>
<td><TT>const_type</TT> </td>
<td>
The (non-mutable) property map type for mapping vertex or edge
desriptors of the graph to their associated property values, where the
property is specified by <tt>PropertyTag</tt>. This type is a <a
href="../../property_map/doc/property_map.html">property map</a>.
</tr>

</table>

<br>
<HR>
<TABLE>
<TR valign=top>
<TD nowrap>Copyright &copy; 2000-2001</TD><TD>
<A HREF="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</A>,
Indiana University (<A
HREF="mailto:jsiek@osl.iu.edu">jsiek@osl.iu.edu</A>)<br>
<A HREF="http://www.boost.org/people/liequan_lee.htm">Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@cs.indiana.edu">llee@cs.indiana.edu</A>)<br>
<A HREF="http://www.osl.iu.edu/~lums">Andrew Lumsdaine</A>,
Indiana University (<A
HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu</A>)
</TD></TR></TABLE>

</BODY>
</HTML> 
