123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- <html>
- <!--
- Copyright (c) Jeremy Siek 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>
- <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
- <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
- <meta name="ProgId" content="FrontPage.Editor.Document">
- <title>Adjacency Iterator Adaptor Documentation</title>
- </head>
- <body bgcolor="#FFFFFF" text="#000000">
- <img src="../../../boost.png" alt="boost.png (6897 bytes)"
- align="center" width="277" height="86">
- <h1>Adjacency Iterator Adaptor</h1>
- Defined in header
- <a href="../../../boost/graph/adjacency_iterator.hpp">boost/graph/adjacency_iterator.hpp</a>
- <p>
- The adjacency iterator adaptor transforms an
- <tt>out_edge_iterator</tt> into an adjacency iterator. That is, it
- takes an iterator that traverses over edges, and creates an iterator
- that traverses over the <b><i>target</i></b> vertices of those edges.
- With this adaptor it is trivial to take a graph type that models <a
- href="IncidenceGraph.html">Incidence Graph</a> and add the
- capabilities required of <a href="AdjacencyGraph.html">Adjacency
- Graph</a>.
- <h2>Synopsis</h2>
- <pre>
- namespace boost {
- template <class Graph, class VertexDescriptor, class OutEdgeIter>
- class adjacency_iterator_generator {
- public:
- typedef <a href="../../iterator/doc/iterator_adaptor.html">iterator_adaptor</a><...> type;
- };
- }
- </pre>
- <hr>
- <h3>Example</h3>
- <p>
- The following is an example of how to use the
- <tt>adjacency_iterator_generator</tt> class.
- <p>
- <PRE>
- #include <boost/graph/adjacency_iterator.hpp>
- class my_graph {
- // ...
- typedef ... out_edge_iterator;
- typedef ... vertex_descriptor;
- typedef boost::adjacency_iterator_generator<my_graph, vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
- // ...
- };
- </PRE>
- <h3>Template Parameters</h3>
- <Table border>
- <TR>
- <TH>Parameter</TH><TH>Description</TH>
- </TR>
- <TR>
- <TD><tt>Graph</tt></TD>
- <TD>The graph type, which must model <a
- href="./IncidenceGraph.html">Incidence Graph</a>.</TD>
- </TR>
- <TR>
- <TD><tt>VertexDescriptor</tt></TD>
- <TD>This must be the same type as
- <tt>graph_traits<Graph>::vertex_descriptor</tt>. The reason why
- this is a template parameter is that the primary use of
- <tt>adjacency_iterator_generator</tt> is <b><i>inside</i></b> the
- definition of the graph class, and in that context we can not use
- <tt>graph_traits</tt> on the not yet fully defined graph class.<br>
- <b>Default:</b> <tt>graph_traits<Graph>::vertex_descriptor</tt></TD>
- </TR>
- <TR>
- <TD><tt>OutEdgeIter</tt></TD>
- <TD>This must be the same type as
- <tt>graph_traits<Graph>::out_edge_iterator</tt>.<br>
- <b>Default:</b> <tt>graph_traits<Graph>::out_edge_iterator
- </TD>
- </TR>
- </Table>
- <h3>Model of</h3>
- The adjacency iterator adaptor (the type
- <tt>adjacency_iterator_generator<...>::type</tt>) is a model of <a
- href="../../utility/MultiPassInputIterator.html">Multi-Pass Input Iterator</a>
- </a>.
- <h3>Members</h3>
- The adjacency iterator type implements the member functions and
- operators required of the <a
- href="http://www.boost.org/sgi/stl/RandomAccessIterator.html">Random Access Iterator</a>
- concept, except that the <tt>reference</tt> type is the same as the <tt>value_type</tt>
- so <tt>operator*()</tt> returns by-value. In addition it has the following constructor:
- <pre>
- adjacency_iterator_generator::type(const OutEdgeIter& it, const Graph* g)
- </pre>
- <hr>
- <p>Revised <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %b %Y" startspan -->19 Aug 2001<!--webbot bot="Timestamp" endspan i-checksum="14767" --></p>
- <p>© Copyright Jeremy Siek 2000. Permission to copy, use,
- modify, sell and distribute this document is granted provided this copyright
- notice appears in all copies. This document is provided "as is"
- without express or implied warranty, and with no claim as to its suitability for
- any purpose.</p>
- </body>
- </html>
|