Files
boost_fusion/doc/html/fusion/sequences/concepts/forward_sequence.html
Joel de Guzman eb324cc029 Doc Tweaks
[SVN r35130]
2006-09-16 05:27:33 +00:00

290 lines
18 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Forward
Sequence</title>
<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.66.1">
<link rel="start" href="../../../index.html" title="Chapter 1. Fusion 2.0">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="../concepts.html" title="Concepts">
<link rel="next" href="bidirectional_sequence.html" title="Bidirectional
Sequence">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%">
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="bidirectional_sequence.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="fusion.sequences.concepts.forward_sequence"></a><a href="forward_sequence.html" title="Forward
Sequence">Forward
Sequence</a></h4></div></div></div>
<a name="fusion.sequences.concepts.forward_sequence.description"></a><h5>
<a name="id475905"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.description">Description</a>
</h5>
<p>
A Forward Sequence is a Sequence whose elements are arranged in a definite
order. The ordering is guaranteed not to change from iteration to iteration.
The requirement of a definite ordering allows the definition of element-by-element
equality (if the container's element type is Equality Comparable) and of
lexicographical ordering (if the container's element type is LessThan Comparable).
</p>
<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">s</span></tt></span></dt>
<dd>
A Forward Sequence
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd>
A Forward Sequence type
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">o</span></tt></span></dt>
<dd>
An arbitrary object
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">e</span></tt></span></dt>
<dd>
A Sequence element
</dd>
</dl>
</div>
<a name="fusion.sequences.concepts.forward_sequence.valid_expressions"></a><h5>
<a name="id476022"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
For any Forward Sequence the following expressions must be valid:
</p>
<div class="informaltable">
<h4>
<a name="id476050"></a>
</h4>
<table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>Expression</th>
<th>Return type</th>
<th>Type Requirements</th>
<th>Runtime
Complexity</th>
</tr></thead>
<tbody>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td><a href="../../iterators/concepts/forward_iterator.html" title="Forward
Iterator">Forward Iterator</a></td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td><a href="../../iterators/concepts/forward_iterator.html" title="Forward
Iterator">Forward Iterator</a></td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/size.html" title="size"><tt class="computeroutput"><span class="identifier">size</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>MPL
Integral Constant. Convertible to int.</td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/empty.html" title="empty"><tt class="computeroutput"><span class="identifier">empty</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>MPL
Boolean Constant. Convertible to bool.</td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/front.html" title="front"><tt class="computeroutput"><span class="identifier">front</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>Any
type</td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/front.html" title="front"><tt class="computeroutput"><span class="identifier">front</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="special">=</span> <span class="identifier">o</span></tt></td>
<td>Any
type</td>
<td>
<tt class="computeroutput"><span class="identifier">s</span></tt>
is mutable and <tt class="computeroutput"><span class="identifier">e</span> <span class="special">=</span> <span class="identifier">o</span></tt>,
where <tt class="computeroutput"><span class="identifier">e</span></tt> is the first
element in the sequence, is a valid expression.</td>
<td>Constant</td>
</tr>
</tbody>
</table>
</div>
<a name="fusion.sequences.concepts.forward_sequence.result_type_expressions"></a><h5>
<a name="id476452"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable">
<h4>
<a name="id476475"></a>
</h4>
<table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>Expression</th>
<th>Compile Time Complexity</th>
</tr></thead>
<tbody>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/metafunctions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">begin</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Amortized constant
time</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/metafunctions/end.html" title="end"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">end</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Amortized constant
time</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/metafunctions/size.html" title="size"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">size</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Unspecified</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/metafunctions/empty.html" title="empty"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">empty</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Constant time</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/metafunctions/front.html" title="front"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">front</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Amortized constant
time</td>
</tr>
</tbody>
</table>
</div>
<a name="fusion.sequences.concepts.forward_sequence.expression_semantics"></a><h5>
<a name="id476810"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<div class="informaltable">
<h4>
<a name="id476833"></a>
</h4>
<table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>Expression</th>
<th>Semantics</th>
</tr></thead>
<tbody>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>An
iterator to the first element of the sequence; see <a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a>.</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>A
past-the-end iterator to the sequence; see <a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a>.</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/size.html" title="size"><tt class="computeroutput"><span class="identifier">size</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>The
size of the sequence; see <a href="../intrinsics/functions/size.html" title="size"><tt class="computeroutput"><span class="identifier">size</span></tt></a>.</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/empty.html" title="empty"><tt class="computeroutput"><span class="identifier">empty</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>A
boolean Integral Constant <tt class="computeroutput"><span class="identifier">c</span></tt>
such that <tt class="computeroutput"><span class="identifier">c</span><span class="special">::</span><span class="identifier">value</span> <span class="special">==</span> <span class="keyword">true</span></tt> if and only if the sequence is
empty; see <a href="../intrinsics/functions/empty.html" title="empty"><tt class="computeroutput"><span class="identifier">empty</span></tt></a>.</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/front.html" title="front"><tt class="computeroutput"><span class="identifier">front</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>The
first element in the sequence; see <a href="../intrinsics/functions/front.html" title="front"><tt class="computeroutput"><span class="identifier">front</span></tt></a>.</td>
</tr>
</tbody>
</table>
</div>
<a name="fusion.sequences.concepts.forward_sequence.invariants"></a><h5>
<a name="id477208"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.invariants">Invariants</a>
</h5>
<p>
For any Forward Sequence s the following invariants always hold:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<tt class="computeroutput"><span class="special">[</span><a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">),</span> <a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">))</span></tt> is always a valid range.
</li>
<li>
An <a href="../../algorithms.html" title="Algorithms">Algorithm</a> that iterates through
the range <tt class="computeroutput"><span class="special">[</span><a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">),</span> <a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">))</span></tt> will pass through every element of
<tt class="computeroutput"><span class="identifier">s</span></tt> exactly once.
</li>
<li>
<tt class="computeroutput"><a href="../intrinsics/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt>
is identical to <tt class="computeroutput"><a href="../intrinsics/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">))</span></tt>
if and only if <tt class="computeroutput"><span class="identifier">s</span></tt> is empty.
</li>
<li>
Two different iterations through <tt class="computeroutput"><span class="identifier">s</span></tt>
will access its elements in the same order.
</li>
</ul></div>
<a name="fusion.sequences.concepts.forward_sequence.models"></a><h5>
<a name="id477512"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.models">Models</a>
</h5>
<div class="itemizedlist"><ul type="disc">
<li><a href="../adapted/std__pair.html" title="std::pair"><tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></tt></a></li>
<li><a href="../adapted/boost__array.html" title="boost::array"><tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></tt></a></li>
<li><a href="../containers/vector.html" title="vector"><tt class="computeroutput"><span class="identifier">vector</span></tt></a></li>
<li><a href="../containers/cons.html" title="cons"><tt class="computeroutput"><span class="identifier">cons</span></tt></a></li>
<li><a href="../containers/list.html" title="list"><tt class="computeroutput"><span class="identifier">list</span></tt></a></li>
<li><a href="../containers/set.html" title="set"><tt class="computeroutput"><span class="identifier">set</span></tt></a></li>
<li><a href="../containers/map.html" title="map"><tt class="computeroutput"><span class="identifier">map</span></tt></a></li>
<li><a href="../views/single_view.html" title="single_view"><tt class="computeroutput"><span class="identifier">single_view</span></tt></a></li>
<li><a href="../views/filter_view.html" title="filter_view"><tt class="computeroutput"><span class="identifier">filter_view</span></tt></a></li>
<li><a href="../views/iterator_range.html" title="iterator_range"><tt class="computeroutput"><span class="identifier">iterator_range</span></tt></a></li>
<li><a href="../views/joint_view.html" title="joint_view"><tt class="computeroutput"><span class="identifier">joint_view</span></tt></a></li>
<li><a href="../views/transform_view.html" title="transform_view"><tt class="computeroutput"><span class="identifier">transform_view</span></tt></a></li>
<li><a href="../views/reverse_view.html" title="reverse_view"><tt class="computeroutput"><span class="identifier">reverse_view</span></tt></a></li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright © 2001-2005 Joel de Guzman, Dan Marsden</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../concepts.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="bidirectional_sequence.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>