adding fusion docs and tests

[SVN r34920]
This commit is contained in:
Joel de Guzman
2006-08-22 15:57:13 +00:00
parent 75b9d13a88
commit c31253d8c1
351 changed files with 42280 additions and 0 deletions

View File

@ -0,0 +1,228 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Associative
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<65>1.<2E>Fusion 2.0">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="random_access_sequence.html" title="Random
Access Sequence">
<link rel="next" href="../containers.html" title="Containers">
</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="random_access_sequence.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="../containers.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.associative_sequence"></a><a href="associative_sequence.html" title="Associative
Sequence">Associative
Sequence</a></h4></div></div></div>
<a name="fusion.sequences.concepts.associative_sequence.description"></a><h5>
<a name="id475992"></a>
<a href="associative_sequence.html#fusion.sequences.concepts.associative_sequence.description">Description</a>
</h5>
<p>
An Associative Sequence allows efficient retrieval of elements based on
keys. Like associative sequences in <a href="http://www.boost.org/libs/mpl/index.html" target="_top">MPL</a>,
and unlike associative containers in <a href="http://en.wikipedia.org/wiki/Standard_Template_Library" target="_top">STL</a>,
Fusion associative sequences have no implied ordering relation. Instead,
type identity is used to impose an equivalence relation on keys, and the
order in which sequence elements are traversed during iteration is left
unspecified. In addition, unlike <a href="http://en.wikipedia.org/wiki/Standard_Template_Library" target="_top">STL</a>,
Associative Sequences have mutable iterators. This is due to the fact that
there is no associated ordering relation and the runtime value of the keys
themselves do not have any effect on the associativity of the sequence.
</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>
An Associative Sequence
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd>
An Associative Sequence type
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">K</span></tt></span></dt>
<dd>
An arbitrary <span class="emphasis"><em>key</em></span> 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.associative_sequence.valid_expressions"></a><h5>
<a name="id476156"></a>
<a href="associative_sequence.html#fusion.sequences.concepts.associative_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
For any Associative Sequence the following expressions must be valid:
</p>
<div class="informaltable">
<h4>
<a name="id476184"></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/has_key.html" title="has_key"><tt class="computeroutput"><span class="identifier">has_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>MPL
Boolean Constant. Convertible to bool.</td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>Any
type</td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span><EFBFBD><span class="special">=</span><EFBFBD><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><EFBFBD><span class="special">=</span><EFBFBD><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.associative_sequence.result_type_expressions"></a><h5>
<a name="id476459"></a>
<a href="associative_sequence.html#fusion.sequences.concepts.associative_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable">
<h4>
<a name="id476482"></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/has_key.html" title="has_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">K</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/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">K</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/value_at_key.html" title="value_at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">K</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Amortized constant
time</td>
</tr>
</tbody>
</table>
</div>
<p class="blurb">
<span class="inlinemediaobject"><img src="../../../images/note.png" alt="note"></span><EFBFBD><tt class="computeroutput"><a href="../intrinsics/metafunctions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">K</span><span class="special">&gt;</span></tt>
returns the actual type returned by <tt class="computeroutput"><a href="../intrinsics/functions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt>. In
most cases, this is a reference. Hence, there is no way to know the exact
element type using <tt class="computeroutput"><a href="../intrinsics/metafunctions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">K</span><span class="special">&gt;</span></tt>.The
element at <tt class="computeroutput"><span class="identifier">K</span></tt> may actually
be a reference to begin with. For this purpose, you can use <tt class="computeroutput"><a href="../intrinsics/metafunctions/value_at_key.html" title="value_at_key"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</span><span class="special">&gt;</span></tt>.
</p>
<a name="fusion.sequences.concepts.associative_sequence.expression_semantics"></a><h5>
<a name="id476991"></a>
<a href="associative_sequence.html#fusion.sequences.concepts.associative_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<div class="informaltable">
<h4>
<a name="id477014"></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/has_key.html" title="has_key"><tt class="computeroutput"><span class="identifier">has_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</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><EFBFBD><span class="special">==</span><EFBFBD><span class="keyword">true</span></tt> if and only if there is one or
more elements with the key <tt class="computeroutput"><span class="identifier">k</span></tt>
in <tt class="computeroutput"><span class="identifier">s</span></tt>; see <a href="../intrinsics/functions/has_key.html" title="has_key"><tt class="computeroutput"><span class="identifier">has_key</span></tt></a>.</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/at_key.html" title="at_key"><tt class="computeroutput"><span class="identifier">at_key</span></tt></a><span class="special">&lt;</span><span class="identifier">K</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>The
element associated with the key <tt class="computeroutput"><span class="identifier">K</span></tt>
in the sequence <tt class="computeroutput"><span class="identifier">s</span></tt>;
see <a href="../intrinsics/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a>.</td>
</tr>
</tbody>
</table>
</div>
<a name="fusion.sequences.concepts.associative_sequence.models"></a><h5>
<a name="id477276"></a>
<a href="associative_sequence.html#fusion.sequences.concepts.associative_sequence.models">Models</a>
</h5>
<div class="itemizedlist"><ul type="disc">
<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>
</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 <20> 2001-2005 Joel de Guzman, Dan Marsden</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="random_access_sequence.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="../containers.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,236 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Bidirectional
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<65>1.<2E>Fusion 2.0">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="forward_sequence.html" title="Forward
Sequence">
<link rel="next" href="random_access_sequence.html" title="Random
Access 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="forward_sequence.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="random_access_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.bidirectional_sequence"></a><a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a></h4></div></div></div>
<a name="fusion.sequences.concepts.bidirectional_sequence.description"></a><h5>
<a name="id473452"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_sequence.description">Description</a>
</h5>
<p>
A Bidirectional Sequence is a <a href="forward_sequence.html" title="Forward
Sequence">Forward
Sequence</a> whose iterators model <a href="../../iterators/concepts/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a>.
</p>
<a name="fusion.sequences.concepts.bidirectional_sequence.refinement_of"></a><h5>
<a name="id473502"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_sequence.refinement_of">Refinement
of</a>
</h5>
<p>
<a href="forward_sequence.html" title="Forward
Sequence">Forward Sequence</a>
</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.bidirectional_sequence.valid_expressions"></a><h5>
<a name="id473622"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
In addition to the requirements defined in <a href="forward_sequence.html" title="Forward
Sequence">Forward
Sequence</a>, for any Bidirectional Sequence the following must be met:
</p>
<div class="informaltable">
<h4>
<a name="id473658"></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/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a></td>
<td><EFBFBD></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/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a></td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/back.html" title="back"><tt class="computeroutput"><span class="identifier">back</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>Any
type</td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/back.html" title="back"><tt class="computeroutput"><span class="identifier">back</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span><EFBFBD><span class="special">=</span><EFBFBD><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><EFBFBD><span class="special">=</span><EFBFBD><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.bidirectional_sequence.result_type_expressions"></a><h5>
<a name="id473964"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable">
<h4>
<a name="id473988"></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/back.html" title="back"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">back</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.bidirectional_sequence.expression_semantics"></a><h5>
<a name="id474206"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<p>
The semantics of an expression are defined only where they differ from,
or are not defined in <a href="forward_sequence.html" title="Forward
Sequence">Forward
Sequence</a>.
</p>
<div class="informaltable">
<h4>
<a name="id474245"></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/back.html" title="back"><tt class="computeroutput"><span class="identifier">back</span></tt></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>The
last element in the sequence; see <a href="../intrinsics/functions/back.html" title="back"><tt class="computeroutput"><span class="identifier">back</span></tt></a>.</td>
</tr></tbody>
</table>
</div>
<a name="fusion.sequences.concepts.bidirectional_sequence.models"></a><h5>
<a name="id474342"></a>
<a href="bidirectional_sequence.html#fusion.sequences.concepts.bidirectional_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="../views/iterator_range.html" title="iterator_range"><tt class="computeroutput"><span class="identifier">iterator_range</span></tt></a>
(where adapted sequence is a Bidirectional Sequence)
</li>
<li>
<a href="../views/transform_view.html" title="transform_view"><tt class="computeroutput"><span class="identifier">transform_view</span></tt></a>
(where adapted sequence is a Bidirectional Sequence)
</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 <20> 2001-2005 Joel de Guzman, Dan Marsden</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="forward_sequence.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="random_access_sequence.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,289 @@
<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<65>1.<2E>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="id471521"></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="id471638"></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="id471666"></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><EFBFBD></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><EFBFBD></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><EFBFBD></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><EFBFBD></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><EFBFBD></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><EFBFBD><span class="special">=</span><EFBFBD><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><EFBFBD><span class="special">=</span><EFBFBD><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="id472068"></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="id472090"></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="id472426"></a>
<a href="forward_sequence.html#fusion.sequences.concepts.forward_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<div class="informaltable">
<h4>
<a name="id472449"></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><EFBFBD><span class="special">==</span><EFBFBD><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="id472824"></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><EFBFBD><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><EFBFBD><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="id473128"></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 <20> 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>

View File

@ -0,0 +1,255 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Random
Access 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<65>1.<2E>Fusion 2.0">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="bidirectional_sequence.html" title="Bidirectional
Sequence">
<link rel="next" href="associative_sequence.html" title="Associative
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="bidirectional_sequence.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="associative_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.random_access_sequence"></a><a href="random_access_sequence.html" title="Random
Access Sequence">Random
Access Sequence</a></h4></div></div></div>
<a name="fusion.sequences.concepts.random_access_sequence.description"></a><h5>
<a name="id474531"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_sequence.description">Description</a>
</h5>
<p>
A Random Access Sequence is a <a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a> whose iterators model <a href="../../iterators/concepts/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a>. It guarantees constant time access to arbitrary
sequence elements.
</p>
<a name="fusion.sequences.concepts.random_access_sequence.refinement_of"></a><h5>
<a name="id474583"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_sequence.refinement_of">Refinement
of</a>
</h5>
<p>
<a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a>
</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 Random Access Sequence
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd>
A Random Access Sequence type
</dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">N</span></tt></span></dt>
<dd>
An integral constant
</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.random_access_sequence.valid_expressions"></a><h5>
<a name="id474719"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
In addition to the requirements defined in <a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a>, for any Random Access Sequence the following must be met:
</p>
<div class="informaltable">
<h4>
<a name="id474757"></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/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a></td>
<td><EFBFBD></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/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a></td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>Any
type</td>
<td><EFBFBD></td>
<td>Constant</td>
</tr>
<tr>
<td><tt class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span><EFBFBD><span class="special">=</span><EFBFBD><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><EFBFBD><span class="special">=</span><EFBFBD><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.random_access_sequence.result_type_expressions"></a><h5>
<a name="id475083"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable">
<h4>
<a name="id475106"></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/at.html" title="at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</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/value_at.html" title="value_at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</span><span class="special">&gt;::</span><span class="identifier">type</span></tt></td>
<td>Amortized constant
time</td>
</tr>
</tbody>
</table>
</div>
<p class="blurb">
<span class="inlinemediaobject"><img src="../../../images/note.png" alt="note"></span><EFBFBD><tt class="computeroutput"><a href="../intrinsics/metafunctions/at.html" title="at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</span><span class="special">&gt;</span></tt>
returns the actual type returned by <tt class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt>. In
most cases, this is a reference. Hence, there is no way to know the exact
element type using <tt class="computeroutput"><a href="../intrinsics/metafunctions/at.html" title="at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</span><span class="special">&gt;</span></tt>.The
element at <tt class="computeroutput"><span class="identifier">N</span></tt> may actually
be a reference to begin with. For this purpose, you can use <tt class="computeroutput"><a href="../intrinsics/metafunctions/value_at.html" title="value_at"><tt class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at</span></tt></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">,</span><EFBFBD><span class="identifier">N</span><span class="special">&gt;</span></tt>.
</p>
<a name="fusion.sequences.concepts.random_access_sequence.expression_semantics"></a><h5>
<a name="id475657"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<p>
The semantics of an expression are defined only where they differ from,
or are not defined in <a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a>.
</p>
<div class="informaltable">
<h4>
<a name="id475696"></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/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a><span class="special">&lt;</span><span class="identifier">N</span><span class="special">&gt;(</span><span class="identifier">s</span><span class="special">)</span></tt></td>
<td>The
Nth element from the beginning of the sequence; see <a href="../intrinsics/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a>.</td>
</tr></tbody>
</table>
</div>
<a name="fusion.sequences.concepts.random_access_sequence.models"></a><h5>
<a name="id475802"></a>
<a href="random_access_sequence.html#fusion.sequences.concepts.random_access_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="../views/iterator_range.html" title="iterator_range"><tt class="computeroutput"><span class="identifier">iterator_range</span></tt></a>
(where adapted sequence is a Random Access Sequence)
</li>
<li>
<a href="../views/transform_view.html" title="transform_view"><tt class="computeroutput"><span class="identifier">transform_view</span></tt></a>
(where adapted sequence is a Random Access Sequence)
</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 <20> 2001-2005 Joel de Guzman, Dan Marsden</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="bidirectional_sequence.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="associative_sequence.html"><img src="../../../images/next.png" alt="Next"></a>
</div>
</body>
</html>