Added function_output_iterator and shared_container_iterator to index.

Updated outdated pdfs.


[SVN r22097]
This commit is contained in:
Dave Abrahams 2004-02-01 03:58:49 +00:00
parent 13dcd5590f
commit c8d1461340
6 changed files with 42 additions and 20 deletions

View File

@ -53,21 +53,21 @@ older Boost Iterator Adaptor Library.</td>
<div class="contents topic" id="table-of-contents"> <div class="contents topic" id="table-of-contents">
<p class="topic-title"><a name="table-of-contents"><strong>Table of Contents</strong></a></p> <p class="topic-title"><a name="table-of-contents"><strong>Table of Contents</strong></a></p>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="#new-style-iterators" id="id21" name="id21">New-Style Iterators</a></li> <li><a class="reference" href="#new-style-iterators" id="id22" name="id22">New-Style Iterators</a></li>
<li><a class="reference" href="#iterator-facade-and-adaptor" id="id22" name="id22">Iterator Facade and Adaptor</a></li> <li><a class="reference" href="#iterator-facade-and-adaptor" id="id23" name="id23">Iterator Facade and Adaptor</a></li>
<li><a class="reference" href="#specialized-adaptors" id="id23" name="id23">Specialized Adaptors</a></li> <li><a class="reference" href="#specialized-adaptors" id="id24" name="id24">Specialized Adaptors</a></li>
<li><a class="reference" href="#iterator-utilities" id="id24" name="id24">Iterator Utilities</a><ul> <li><a class="reference" href="#iterator-utilities" id="id25" name="id25">Iterator Utilities</a><ul>
<li><a class="reference" href="#traits" id="id25" name="id25">Traits</a></li> <li><a class="reference" href="#traits" id="id26" name="id26">Traits</a></li>
<li><a class="reference" href="#testing-and-concept-checking" id="id26" name="id26">Testing and Concept Checking</a></li> <li><a class="reference" href="#testing-and-concept-checking" id="id27" name="id27">Testing and Concept Checking</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#upgrading-from-the-old-boost-iterator-adaptor-library" id="id27" name="id27">Upgrading from the old Boost Iterator Adaptor Library</a></li> <li><a class="reference" href="#upgrading-from-the-old-boost-iterator-adaptor-library" id="id28" name="id28">Upgrading from the old Boost Iterator Adaptor Library</a></li>
<li><a class="reference" href="#history" id="id28" name="id28">History</a></li> <li><a class="reference" href="#history" id="id29" name="id29">History</a></li>
</ul> </ul>
</div> </div>
<hr /> <hr />
<div class="section" id="new-style-iterators"> <div class="section" id="new-style-iterators">
<h1><a class="toc-backref" href="#id21" name="new-style-iterators">New-Style Iterators</a></h1> <h1><a class="toc-backref" href="#id22" name="new-style-iterators">New-Style Iterators</a></h1>
<p>The iterator categories defined in C++98 are extremely limiting <p>The iterator categories defined in C++98 are extremely limiting
because they bind together two orthogonal concepts: traversal and because they bind together two orthogonal concepts: traversal and
element access. For example, because a random access iterator is element access. For example, because a random access iterator is
@ -86,7 +86,7 @@ concepts, see our</p>
<a class="reference" href="new-iter-concepts.html">Standard Proposal For New-Style Iterators</a> (<a class="reference" href="new-iter-concepts.pdf">PDF</a>)</blockquote> <a class="reference" href="new-iter-concepts.html">Standard Proposal For New-Style Iterators</a> (<a class="reference" href="new-iter-concepts.pdf">PDF</a>)</blockquote>
</div> </div>
<div class="section" id="iterator-facade-and-adaptor"> <div class="section" id="iterator-facade-and-adaptor">
<h1><a class="toc-backref" href="#id22" name="iterator-facade-and-adaptor">Iterator Facade and Adaptor</a></h1> <h1><a class="toc-backref" href="#id23" name="iterator-facade-and-adaptor">Iterator Facade and Adaptor</a></h1>
<p>Writing standard-conforming iterators is tricky, but the need comes <p>Writing standard-conforming iterators is tricky, but the need comes
up often. In order to ease the implementation of new iterators, up often. In order to ease the implementation of new iterators,
the Boost.Iterator library provides the <tt class="literal"><span class="pre">iterator_facade</span></tt> class template, the Boost.Iterator library provides the <tt class="literal"><span class="pre">iterator_facade</span></tt> class template,
@ -113,7 +113,7 @@ and accepted into the first C++ technical report; see our</p>
<p>for more details.</p> <p>for more details.</p>
</div> </div>
<div class="section" id="specialized-adaptors"> <div class="section" id="specialized-adaptors">
<h1><a class="toc-backref" href="#id23" name="specialized-adaptors">Specialized Adaptors</a></h1> <h1><a class="toc-backref" href="#id24" name="specialized-adaptors">Specialized Adaptors</a></h1>
<p>The iterator library supplies a useful suite of standard-conforming <p>The iterator library supplies a useful suite of standard-conforming
iterator templates based on the Boost <a class="reference" href="#iterator-facade-and-adaptor">iterator facade and adaptor</a>.</p> iterator templates based on the Boost <a class="reference" href="#iterator-facade-and-adaptor">iterator facade and adaptor</a>.</p>
<ul class="simple"> <ul class="simple">
@ -121,6 +121,9 @@ iterator templates based on the Boost <a class="reference" href="#iterator-facad
Implements a &quot;lazy sequence&quot;</li> Implements a &quot;lazy sequence&quot;</li>
<li><a class="reference" href="filter_iterator.html"><tt class="literal"><span class="pre">filter_iterator</span></tt></a> (<a class="reference" href="filter_iterator.pdf">PDF</a>): an iterator over the subset of elements of some <li><a class="reference" href="filter_iterator.html"><tt class="literal"><span class="pre">filter_iterator</span></tt></a> (<a class="reference" href="filter_iterator.pdf">PDF</a>): an iterator over the subset of elements of some
sequence which satisfy a given predicate</li> sequence which satisfy a given predicate</li>
<li><a class="reference" href="function_output_iterator.html"><tt class="literal"><span class="pre">function_output_iterator</span></tt></a> (<a class="reference" href="function_output_iterator.pdf">PDF</a>): an output iterator wrapping a unary function
object; each time an element is written into the dereferenced
iterator, it is passed as a parameter to the function object.</li>
<li><a class="reference" href="indirect_iterator.html"><tt class="literal"><span class="pre">indirect_iterator</span></tt></a> (<a class="reference" href="indirect_iterator.pdf">PDF</a>): an iterator over the objects <em>pointed-to</em> by the <li><a class="reference" href="indirect_iterator.html"><tt class="literal"><span class="pre">indirect_iterator</span></tt></a> (<a class="reference" href="indirect_iterator.pdf">PDF</a>): an iterator over the objects <em>pointed-to</em> by the
elements of some sequence.</li> elements of some sequence.</li>
<li><a class="reference" href="permutation_iterator.html"><tt class="literal"><span class="pre">permutation_iterator</span></tt></a> (<a class="reference" href="permutation_iterator.pdf">PDF</a>): an iterator over the elements of some random-access <li><a class="reference" href="permutation_iterator.html"><tt class="literal"><span class="pre">permutation_iterator</span></tt></a> (<a class="reference" href="permutation_iterator.pdf">PDF</a>): an iterator over the elements of some random-access
@ -128,6 +131,8 @@ sequence, rearranged according to some sequence of integer indices.</li>
<li><a class="reference" href="reverse_iterator.html"><tt class="literal"><span class="pre">reverse_iterator</span></tt></a> (<a class="reference" href="reverse_iterator.pdf">PDF</a>): an iterator which traverses the elements of some <li><a class="reference" href="reverse_iterator.html"><tt class="literal"><span class="pre">reverse_iterator</span></tt></a> (<a class="reference" href="reverse_iterator.pdf">PDF</a>): an iterator which traverses the elements of some
bidirectional sequence in reverse. Corrects many of the bidirectional sequence in reverse. Corrects many of the
shortcomings of C++98's <tt class="literal"><span class="pre">std::reverse_iterator</span></tt>.</li> shortcomings of C++98's <tt class="literal"><span class="pre">std::reverse_iterator</span></tt>.</li>
<li><a class="reference" href="../../utility/shared_container_iterator.html"><tt class="literal"><span class="pre">shared_container_iterator</span></tt></a>: an iterator over elements of a container whose
lifetime is maintained by a <a class="reference" href="../../smart_ptr/shared_ptr.htm"><tt class="literal"><span class="pre">shared_ptr</span></tt></a> stored in the iterator.</li>
<li><a class="reference" href="transform_iterator.html"><tt class="literal"><span class="pre">transform_iterator</span></tt></a> (<a class="reference" href="transform_iterator.pdf">PDF</a>): an iterator over elements which are the result of <li><a class="reference" href="transform_iterator.html"><tt class="literal"><span class="pre">transform_iterator</span></tt></a> (<a class="reference" href="transform_iterator.pdf">PDF</a>): an iterator over elements which are the result of
applying some functional transformation to the elements of an applying some functional transformation to the elements of an
underlying sequence. This component also replaces the old underlying sequence. This component also replaces the old
@ -137,9 +142,9 @@ positions of heterogeneous underlying iterators.</li>
</ul> </ul>
</div> </div>
<div class="section" id="iterator-utilities"> <div class="section" id="iterator-utilities">
<h1><a class="toc-backref" href="#id24" name="iterator-utilities">Iterator Utilities</a></h1> <h1><a class="toc-backref" href="#id25" name="iterator-utilities">Iterator Utilities</a></h1>
<div class="section" id="traits"> <div class="section" id="traits">
<h2><a class="toc-backref" href="#id25" name="traits">Traits</a></h2> <h2><a class="toc-backref" href="#id26" name="traits">Traits</a></h2>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="pointee.html"><tt class="literal"><span class="pre">pointee.hpp</span></tt></a> (<a class="reference" href="pointee.pdf">PDF</a>): Provides the capability to deduce the referent types <li><a class="reference" href="pointee.html"><tt class="literal"><span class="pre">pointee.hpp</span></tt></a> (<a class="reference" href="pointee.pdf">PDF</a>): Provides the capability to deduce the referent types
of pointers, smart pointers and iterators in generic code. Used of pointers, smart pointers and iterators in generic code. Used
@ -153,7 +158,7 @@ testing iterator interoperability -->
<!-- comment! __ interoperable.pdf --> <!-- comment! __ interoperable.pdf -->
</div> </div>
<div class="section" id="testing-and-concept-checking"> <div class="section" id="testing-and-concept-checking">
<h2><a class="toc-backref" href="#id26" name="testing-and-concept-checking">Testing and Concept Checking</a></h2> <h2><a class="toc-backref" href="#id27" name="testing-and-concept-checking">Testing and Concept Checking</a></h2>
<ul class="simple"> <ul class="simple">
<li><a class="reference" href="iterator_concepts.html"><tt class="literal"><span class="pre">iterator_concepts.hpp</span></tt></a> (<a class="reference" href="iterator_concepts.pdf">PDF</a>): Concept checking classes for the new iterator concepts.</li> <li><a class="reference" href="iterator_concepts.html"><tt class="literal"><span class="pre">iterator_concepts.hpp</span></tt></a> (<a class="reference" href="iterator_concepts.pdf">PDF</a>): Concept checking classes for the new iterator concepts.</li>
<li><a class="reference" href="iterator_archetypes.html"><tt class="literal"><span class="pre">iterator_archetypes.hpp</span></tt></a> (<a class="reference" href="iterator_archetypes.pdf">PDF</a>): Concept archetype classes for the new iterators concepts.</li> <li><a class="reference" href="iterator_archetypes.html"><tt class="literal"><span class="pre">iterator_archetypes.hpp</span></tt></a> (<a class="reference" href="iterator_archetypes.pdf">PDF</a>): Concept archetype classes for the new iterators concepts.</li>
@ -161,7 +166,7 @@ testing iterator interoperability -->
</div> </div>
</div> </div>
<div class="section" id="upgrading-from-the-old-boost-iterator-adaptor-library"> <div class="section" id="upgrading-from-the-old-boost-iterator-adaptor-library">
<h1><a class="toc-backref" href="#id27" name="upgrading-from-the-old-boost-iterator-adaptor-library">Upgrading from the old Boost Iterator Adaptor Library</a></h1> <h1><a class="toc-backref" href="#id28" name="upgrading-from-the-old-boost-iterator-adaptor-library">Upgrading from the old Boost Iterator Adaptor Library</a></h1>
<a class="target" id="upgrading" name="upgrading"></a><p>If you have been using the old Boost Iterator Adaptor library to <a class="target" id="upgrading" name="upgrading"></a><p>If you have been using the old Boost Iterator Adaptor library to
implement iterators, you probably wrote a <tt class="literal"><span class="pre">Policies</span></tt> class which implement iterators, you probably wrote a <tt class="literal"><span class="pre">Policies</span></tt> class which
captures the core operations of your iterator. In the new library captures the core operations of your iterator. In the new library
@ -171,7 +176,7 @@ you probably wrote a <a class="reference" href="../../../more/generic_programmin
<tt class="literal"><span class="pre">iterator_adaptor</span></tt> specialization you needed; in the new library <tt class="literal"><span class="pre">iterator_adaptor</span></tt> specialization you needed; in the new library
design you don't need a type generator (though may want to keep it design you don't need a type generator (though may want to keep it
around as a compatibility aid for older code) because, due to the around as a compatibility aid for older code) because, due to the
use of the Curiously Recurring Template Pattern (CRTP) <a class="citation-reference" href="#cop95" id="id20" name="id20">[Cop95]</a>, use of the Curiously Recurring Template Pattern (CRTP) <a class="citation-reference" href="#cop95" id="id21" name="id21">[Cop95]</a>,
you can now define the iterator class yourself and acquire you can now define the iterator class yourself and acquire
functionality through inheritance from <tt class="literal"><span class="pre">iterator_facade</span></tt> or functionality through inheritance from <tt class="literal"><span class="pre">iterator_facade</span></tt> or
<tt class="literal"><span class="pre">iterator_adaptor</span></tt>. As a result, you also get much finer control <tt class="literal"><span class="pre">iterator_adaptor</span></tt>. As a result, you also get much finer control
@ -186,7 +191,7 @@ type, <tt class="literal"><span class="pre">transform_iterator</span></tt> will
<tt class="literal"><span class="pre">projection_iterator</span></tt> used to.</p> <tt class="literal"><span class="pre">projection_iterator</span></tt> used to.</p>
</div> </div>
<div class="section" id="history"> <div class="section" id="history">
<h1><a class="toc-backref" href="#id28" name="history">History</a></h1> <h1><a class="toc-backref" href="#id29" name="history">History</a></h1>
<p>In 2000 Dave Abrahams was writing an iterator for a container of <p>In 2000 Dave Abrahams was writing an iterator for a container of
pointers, which would access the pointed-to elements when pointers, which would access the pointed-to elements when
dereferenced. Naturally, being a library writer, he decided to dereferenced. Naturally, being a library writer, he decided to
@ -215,7 +220,7 @@ library you see today.</p>
<colgroup><col class="label" /><col /></colgroup> <colgroup><col class="label" /><col /></colgroup>
<col /> <col />
<tbody valign="top"> <tbody valign="top">
<tr><td class="label"><a class="fn-backref" href="#id20" name="cop95">[Cop95]</a></td><td>[Coplien, 1995] Coplien, J., Curiously Recurring Template <tr><td class="label"><a class="fn-backref" href="#id21" name="cop95">[Cop95]</a></td><td>[Coplien, 1995] Coplien, J., Curiously Recurring Template
Patterns, C++ Report, February 1995, pp. 24-27.</td></tr> Patterns, C++ Report, February 1995, pp. 24-27.</td></tr>
</tbody> </tbody>
</table> </table>

View File

@ -134,6 +134,10 @@ iterator templates based on the Boost `iterator facade and adaptor`_.
* |filter|_ (PDF__): an iterator over the subset of elements of some * |filter|_ (PDF__): an iterator over the subset of elements of some
sequence which satisfy a given predicate sequence which satisfy a given predicate
* |function|_ (PDF__): an output iterator wrapping a unary function
object; each time an element is written into the dereferenced
iterator, it is passed as a parameter to the function object.
* |indirect|_ (PDF__): an iterator over the objects *pointed-to* by the * |indirect|_ (PDF__): an iterator over the objects *pointed-to* by the
elements of some sequence. elements of some sequence.
@ -144,6 +148,9 @@ iterator templates based on the Boost `iterator facade and adaptor`_.
bidirectional sequence in reverse. Corrects many of the bidirectional sequence in reverse. Corrects many of the
shortcomings of C++98's ``std::reverse_iterator``. shortcomings of C++98's ``std::reverse_iterator``.
* |shared|_: an iterator over elements of a container whose
lifetime is maintained by a |shared_ptr|_ stored in the iterator.
* |transform|_ (PDF__): an iterator over elements which are the result of * |transform|_ (PDF__): an iterator over elements which are the result of
applying some functional transformation to the elements of an applying some functional transformation to the elements of an
underlying sequence. This component also replaces the old underlying sequence. This component also replaces the old
@ -160,6 +167,10 @@ __ counting_iterator.pdf
.. _filter: filter_iterator.html .. _filter: filter_iterator.html
__ filter_iterator.pdf __ filter_iterator.pdf
.. |function| replace:: ``function_output_iterator``
.. _function: function_output_iterator.html
__ function_output_iterator.pdf
.. |indirect| replace:: ``indirect_iterator`` .. |indirect| replace:: ``indirect_iterator``
.. _indirect: indirect_iterator.html .. _indirect: indirect_iterator.html
__ indirect_iterator.pdf __ indirect_iterator.pdf
@ -172,6 +183,9 @@ __ permutation_iterator.pdf
.. _reverse: reverse_iterator.html .. _reverse: reverse_iterator.html
__ reverse_iterator.pdf __ reverse_iterator.pdf
.. |shared| replace:: ``shared_container_iterator``
.. _shared: ../../utility/shared_container_iterator.html
.. |transform| replace:: ``transform_iterator`` .. |transform| replace:: ``transform_iterator``
.. _transform: transform_iterator.html .. _transform: transform_iterator.html
__ transform_iterator.pdf __ transform_iterator.pdf
@ -180,6 +194,9 @@ __ transform_iterator.pdf
.. _zip: zip_iterator.html .. _zip: zip_iterator.html
__ zip_iterator.pdf __ zip_iterator.pdf
.. |shared_ptr| replace:: ``shared_ptr``
.. _shared_ptr: ../../smart_ptr/shared_ptr.htm
==================== ====================
Iterator Utilities Iterator Utilities
==================== ====================

Binary file not shown.

View File

@ -7,7 +7,7 @@
<title>pointee and indirect_reference</title> <title>pointee and indirect_reference</title>
<meta name="author" content="David Abrahams" /> <meta name="author" content="David Abrahams" />
<meta name="organization" content="Boost Consulting" /> <meta name="organization" content="Boost Consulting" />
<meta name="date" content="2004-01-13" /> <meta name="date" content="2004-01-29" />
<meta name="copyright" content="Copyright David Abrahams 2004. All rights reserved" /> <meta name="copyright" content="Copyright David Abrahams 2004. All rights reserved" />
<link rel="stylesheet" href="default.css" type="text/css" /> <link rel="stylesheet" href="default.css" type="text/css" />
</head> </head>
@ -25,7 +25,7 @@
<tr><th class="docinfo-name">Organization:</th> <tr><th class="docinfo-name">Organization:</th>
<td><a class="first last reference" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr> <td><a class="first last reference" href="http://www.boost-consulting.com">Boost Consulting</a></td></tr>
<tr><th class="docinfo-name">Date:</th> <tr><th class="docinfo-name">Date:</th>
<td>2004-01-13</td></tr> <td>2004-01-29</td></tr>
<tr><th class="docinfo-name">Copyright:</th> <tr><th class="docinfo-name">Copyright:</th>
<td>Copyright David Abrahams 2004. All rights reserved</td></tr> <td>Copyright David Abrahams 2004. All rights reserved</td></tr>
</tbody> </tbody>

Binary file not shown.

Binary file not shown.