mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-29 20:37:17 +02:00
filled out some missing operator--, added a comment about the operations and concepts,
and added some text to the indirect iterator example [SVN r21629]
This commit is contained in:
@ -48,12 +48,15 @@ then returns the result.</p>
|
||||
<div class="contents topic" id="table-of-contents">
|
||||
<p class="topic-title"><a name="table-of-contents">Table of Contents</a></p>
|
||||
<ul class="simple">
|
||||
<li><a class="reference" href="#transform-iterator-requirements" id="id1" name="id1"><tt class="literal"><span class="pre">transform_iterator</span></tt> requirements</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-models" id="id2" name="id2"><tt class="literal"><span class="pre">transform_iterator</span></tt> models</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-operations" id="id3" name="id3"><tt class="literal"><span class="pre">transform_iterator</span></tt> operations</a></li>
|
||||
<li><a class="reference" href="#example" id="id4" name="id4">Example</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-synopsis" id="id1" name="id1"><tt class="literal"><span class="pre">transform_iterator</span></tt> synopsis</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-requirements" id="id2" name="id2"><tt class="literal"><span class="pre">transform_iterator</span></tt> requirements</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-models" id="id3" name="id3"><tt class="literal"><span class="pre">transform_iterator</span></tt> models</a></li>
|
||||
<li><a class="reference" href="#transform-iterator-operations" id="id4" name="id4"><tt class="literal"><span class="pre">transform_iterator</span></tt> operations</a></li>
|
||||
<li><a class="reference" href="#example" id="id5" name="id5">Example</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="transform-iterator-synopsis">
|
||||
<h1><a class="toc-backref" href="#id1" name="transform-iterator-synopsis"><tt class="literal"><span class="pre">transform_iterator</span></tt> synopsis</a></h1>
|
||||
<!-- Version 1.3 of this document was accepted for TR1 -->
|
||||
<pre class="literal-block">
|
||||
template <class UnaryFunction,
|
||||
@ -72,18 +75,19 @@ public:
|
||||
, typename enable_if_convertible<I2, Iterator>::type* = 0 // exposition
|
||||
, typename enable_if_convertible<F2, UnaryFunction>::type* = 0 // exposition
|
||||
);
|
||||
|
||||
reference operator*() const;
|
||||
transform_iterator& operator++();
|
||||
Iterator base() const;
|
||||
UnaryFunction functor() const;
|
||||
reference operator*() const;
|
||||
transform_iterator& operator++();
|
||||
transform_iterator& operator--();
|
||||
private:
|
||||
Iterator m_iterator; // exposition
|
||||
UnaryFunction m_f; // exposition
|
||||
};
|
||||
</pre>
|
||||
</div>
|
||||
<div class="section" id="transform-iterator-requirements">
|
||||
<h1><a class="toc-backref" href="#id1" name="transform-iterator-requirements"><tt class="literal"><span class="pre">transform_iterator</span></tt> requirements</a></h1>
|
||||
<h1><a class="toc-backref" href="#id2" name="transform-iterator-requirements"><tt class="literal"><span class="pre">transform_iterator</span></tt> requirements</a></h1>
|
||||
<p>The type <tt class="literal"><span class="pre">UnaryFunction</span></tt> must be Assignable, Copy Constructible, and
|
||||
the expression <tt class="literal"><span class="pre">f(*i)</span></tt> must be valid where <tt class="literal"><span class="pre">f</span></tt> is an object of
|
||||
type <tt class="literal"><span class="pre">UnaryFunction</span></tt>, <tt class="literal"><span class="pre">i</span></tt> is an object of type <tt class="literal"><span class="pre">Iterator</span></tt>, and
|
||||
@ -92,7 +96,7 @@ where the type of <tt class="literal"><span class="pre">f(*i)</span></tt> must b
|
||||
<p>The type <tt class="literal"><span class="pre">Iterator</span></tt> must at least model Readable Iterator.</p>
|
||||
</div>
|
||||
<div class="section" id="transform-iterator-models">
|
||||
<h1><a class="toc-backref" href="#id2" name="transform-iterator-models"><tt class="literal"><span class="pre">transform_iterator</span></tt> models</a></h1>
|
||||
<h1><a class="toc-backref" href="#id3" name="transform-iterator-models"><tt class="literal"><span class="pre">transform_iterator</span></tt> models</a></h1>
|
||||
<p>The resulting <tt class="literal"><span class="pre">transform_iterator</span></tt> models the most refined of the
|
||||
following options that is also modeled by <tt class="literal"><span class="pre">Iterator</span></tt>.</p>
|
||||
<blockquote>
|
||||
@ -110,7 +114,10 @@ concept that is modeled by <tt class="literal"><span class="pre">Iterator</span>
|
||||
The <tt class="literal"><span class="pre">value_type</span></tt> is <tt class="literal"><span class="pre">remove_cv<remove_reference<reference></span> <span class="pre">>::type</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="transform-iterator-operations">
|
||||
<h1><a class="toc-backref" href="#id3" name="transform-iterator-operations"><tt class="literal"><span class="pre">transform_iterator</span></tt> operations</a></h1>
|
||||
<h1><a class="toc-backref" href="#id4" name="transform-iterator-operations"><tt class="literal"><span class="pre">transform_iterator</span></tt> operations</a></h1>
|
||||
<p>In addition to the operations required by the concepts modeled by
|
||||
<tt class="literal"><span class="pre">transform_iterator</span></tt>, <tt class="literal"><span class="pre">transform_iterator</span></tt> provides the following
|
||||
operations.</p>
|
||||
<p><tt class="literal"><span class="pre">transform_iterator();</span></tt></p>
|
||||
<table class="field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
@ -186,6 +193,17 @@ transform_iterator(
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><tt class="literal"><span class="pre">transform_iterator&</span> <span class="pre">operator--();</span></tt></p>
|
||||
<table class="field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field"><th class="field-name">Effects:</th><td class="field-body"><tt class="literal"><span class="pre">--m_iterator</span></tt></td>
|
||||
</tr>
|
||||
<tr class="field"><th class="field-name">Returns:</th><td class="field-body"><tt class="literal"><span class="pre">*this</span></tt></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<pre class="literal-block">
|
||||
template <class UnaryFunction, class Iterator>
|
||||
transform_iterator<UnaryFunction, Iterator>
|
||||
@ -216,7 +234,7 @@ default constructed and <tt class="literal"><span class="pre">m_iterator</span><
|
||||
</table>
|
||||
</div>
|
||||
<div class="section" id="example">
|
||||
<h1><a class="toc-backref" href="#id4" name="example">Example</a></h1>
|
||||
<h1><a class="toc-backref" href="#id5" name="example">Example</a></h1>
|
||||
<p>This is a simple example of using the transform_iterators class to
|
||||
generate iterators that multiply (or add to) the value returned by
|
||||
dereferencing the iterator. It would be cooler to use lambda library
|
||||
@ -254,7 +272,7 @@ adding 4 to each element in the array:
|
||||
<hr class="footer"/>
|
||||
<div class="footer">
|
||||
<a class="reference" href="transform_iterator.rst">View document source</a>.
|
||||
Generated on: 2004-01-12 15:20 UTC.
|
||||
Generated on: 2004-01-12 15:46 UTC.
|
||||
Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
|
||||
</div>
|
||||
</body>
|
||||
|
Reference in New Issue
Block a user