Full merge from trunk at revision 41356 of entire boost-root tree.

[SVN r41370]
This commit is contained in:
Beman Dawes
2007-11-25 18:38:02 +00:00
parent ed9cb87ac3
commit d57e8cfe9e
455 changed files with 64511 additions and 0 deletions

View File

@ -0,0 +1,332 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Associative
Sequence</title>
<link rel="stylesheet" href="../../../../../../../doc/html/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="../intrinsic.html" title="Intrinsic">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<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>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="random_access_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../intrinsic.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="fusion.sequence.concepts.associative_sequence"></a><a href="associative_sequence.html" title="Associative
Sequence">Associative
Sequence</a></h4></div></div></div>
<a name="fusion.sequence.concepts.associative_sequence.description"></a><h5>
<a name="id493073"></a>
<a href="associative_sequence.html#fusion.sequence.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><p>
An Associative Sequence
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd><p>
An Associative Sequence type
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">K</span></tt></span></dt>
<dd><p>
An arbitrary <span class="emphasis"><em>key</em></span> type
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">o</span></tt></span></dt>
<dd><p>
An arbitrary object
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">e</span></tt></span></dt>
<dd><p>
A Sequence element
</p></dd>
</dl>
</div>
<a name="fusion.sequence.concepts.associative_sequence.valid_expressions"></a><h5>
<a name="id493262"></a>
<a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
For any Associative Sequence the following expressions must be valid:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Return type
</p>
</th>
<th>
<p>
Type Requirements
</p>
</th>
<th>
<p>
Runtime Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
Boolean Constant</a>. Convertible to bool.
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="special">=</span> <span class="identifier">o</span></tt>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
<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.
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.associative_sequence.result_type_expressions"></a><h5>
<a name="id493647"></a>
<a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Compile Time Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="identifier">K</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="identifier">K</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="identifier">K</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
</tbody>
</table></div>
<div class="sidebar"><p>
<span class="inlinemediaobject"><img src="../../../images/note.png" alt="note"></span> <tt class="computeroutput"><a href="../intrinsic/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> <span class="identifier">K</span><span class="special">&gt;</span></tt> returns the actual type returned by
<tt class="computeroutput"><a href="../intrinsic/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="../intrinsic/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> <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="../intrinsic/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> <span class="identifier">N</span><span class="special">&gt;</span></tt>.
</p></div>
<a name="fusion.sequence.concepts.associative_sequence.expression_semantics"></a><h5>
<a name="id494222"></a>
<a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
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 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="../intrinsic/functions/has_key.html" title="has_key"><tt class="computeroutput"><span class="identifier">has_key</span></tt></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
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="../intrinsic/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a>.
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.associative_sequence.models"></a><h5>
<a name="id494544"></a>
<a href="associative_sequence.html#fusion.sequence.concepts.associative_sequence.models">Models</a>
</h5>
<div class="itemizedlist"><ul type="disc">
<li><a href="../../container/set.html" title="set"><tt class="computeroutput"><span class="identifier">set</span></tt></a></li>
<li><a href="../../container/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"><div class="copyright-footer">Copyright <20> 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="random_access_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../intrinsic.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,348 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Bidirectional
Sequence</title>
<link rel="stylesheet" href="../../../../../../../doc/html/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%"><tr>
<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>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="forward_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="random_access_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="fusion.sequence.concepts.bidirectional_sequence"></a><a href="bidirectional_sequence.html" title="Bidirectional
Sequence">Bidirectional
Sequence</a></h4></div></div></div>
<a name="fusion.sequence.concepts.bidirectional_sequence.description"></a><h5>
<a name="id490104"></a>
<a href="bidirectional_sequence.html#fusion.sequence.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="../../iterator/concepts/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a>.
</p>
<a name="fusion.sequence.concepts.bidirectional_sequence.refinement_of"></a><h5>
<a name="id490154"></a>
<a href="bidirectional_sequence.html#fusion.sequence.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><p>
A Forward Sequence
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd><p>
A Forward Sequence type
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">o</span></tt></span></dt>
<dd><p>
An arbitrary object
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">e</span></tt></span></dt>
<dd><p>
A Sequence element
</p></dd>
</dl>
</div>
<a name="fusion.sequence.concepts.bidirectional_sequence.valid_expressions"></a><h5>
<a name="id490294"></a>
<a href="bidirectional_sequence.html#fusion.sequence.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"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Return type
</p>
</th>
<th>
<p>
Type Requirements
</p>
</th>
<th>
<p>
Runtime Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/bidirectional_iterator.html" title="Bidirectional
Iterator">Bidirectional
Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="special">=</span> <span class="identifier">o</span></tt>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
<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.
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.bidirectional_sequence.result_type_expressions"></a><h5>
<a name="id490734"></a>
<a href="bidirectional_sequence.html#fusion.sequence.concepts.bidirectional_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Compile Time Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.bidirectional_sequence.expression_semantics"></a><h5>
<a name="id491011"></a>
<a href="bidirectional_sequence.html#fusion.sequence.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"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody><tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
The last element in the sequence; see <a href="../intrinsic/functions/back.html" title="back"><tt class="computeroutput"><span class="identifier">back</span></tt></a>.
</p>
</td>
</tr></tbody>
</table></div>
<a name="fusion.sequence.concepts.bidirectional_sequence.models"></a><h5>
<a name="id491164"></a>
<a href="bidirectional_sequence.html#fusion.sequence.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="../../container/vector.html" title="vector"><tt class="computeroutput"><span class="identifier">vector</span></tt></a></li>
<li><a href="../../view/reverse_view.html" title="reverse_view"><tt class="computeroutput"><span class="identifier">reverse_view</span></tt></a></li>
<li>
<a href="../../view/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="../../view/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="../../view/zip_view.html" title="zip_view"><tt class="computeroutput"><span class="identifier">zip_view</span></tt></a>
(where adapted sequences are models Bidirectional Sequence)
</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"><div class="copyright-footer">Copyright <20> 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="forward_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="random_access_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,475 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Forward
Sequence</title>
<link rel="stylesheet" href="../../../../../../../doc/html/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%"><tr>
<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>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../concepts.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bidirectional_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="fusion.sequence.concepts.forward_sequence"></a><a href="forward_sequence.html" title="Forward
Sequence">Forward
Sequence</a></h4></div></div></div>
<a name="fusion.sequence.concepts.forward_sequence.description"></a><h5>
<a name="id487826"></a>
<a href="forward_sequence.html#fusion.sequence.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><p>
A Forward Sequence
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd><p>
A Forward Sequence type
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">o</span></tt></span></dt>
<dd><p>
An arbitrary object
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">e</span></tt></span></dt>
<dd><p>
A Sequence element
</p></dd>
</dl>
</div>
<a name="fusion.sequence.concepts.forward_sequence.valid_expressions"></a><h5>
<a name="id487962"></a>
<a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.valid_expressions">Valid
Expressions</a>
</h5>
<p>
For any Forward Sequence the following expressions must be valid:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Return type
</p>
</th>
<th>
<p>
Type Requirements
</p>
</th>
<th>
<p>
Runtime Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/forward_iterator.html" title="Forward
Iterator">Forward
Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/forward_iterator.html" title="Forward
Iterator">Forward
Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
Integral Constant</a>. Convertible to int.
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
Boolean Constant</a>. Convertible to bool.
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
<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.
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.forward_sequence.result_type_expressions"></a><h5>
<a name="id488546"></a>
<a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Compile Time Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Unspecified
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.forward_sequence.expression_semantics"></a><h5>
<a name="id488965"></a>
<a href="forward_sequence.html#fusion.sequence.concepts.forward_sequence.expression_semantics">Expression
Semantics</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
An iterator to the first element of the sequence; see <a href="../intrinsic/functions/begin.html" title="begin"><tt class="computeroutput"><span class="identifier">begin</span></tt></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
A past-the-end iterator to the sequence; see <a href="../intrinsic/functions/end.html" title="end"><tt class="computeroutput"><span class="identifier">end</span></tt></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
The size of the sequence; see <a href="../intrinsic/functions/size.html" title="size"><tt class="computeroutput"><span class="identifier">size</span></tt></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
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="../intrinsic/functions/empty.html" title="empty"><tt class="computeroutput"><span class="identifier">empty</span></tt></a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
The first element in the sequence; see <a href="../intrinsic/functions/front.html" title="front"><tt class="computeroutput"><span class="identifier">front</span></tt></a>.
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.forward_sequence.invariants"></a><h5>
<a name="id489434"></a>
<a href="forward_sequence.html#fusion.sequence.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="../intrinsic/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="../intrinsic/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="../../algorithm.html" title="Algorithm">Algorithm</a> that iterates through
the range <tt class="computeroutput"><span class="special">[</span><a href="../intrinsic/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="../intrinsic/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="../intrinsic/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="../intrinsic/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.sequence.concepts.forward_sequence.models"></a><h5>
<a name="id489746"></a>
<a href="forward_sequence.html#fusion.sequence.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="../../container/vector.html" title="vector"><tt class="computeroutput"><span class="identifier">vector</span></tt></a></li>
<li><a href="../../container/cons.html" title="cons"><tt class="computeroutput"><span class="identifier">cons</span></tt></a></li>
<li><a href="../../container/list.html" title="list"><tt class="computeroutput"><span class="identifier">list</span></tt></a></li>
<li><a href="../../container/set.html" title="set"><tt class="computeroutput"><span class="identifier">set</span></tt></a></li>
<li><a href="../../container/map.html" title="map"><tt class="computeroutput"><span class="identifier">map</span></tt></a></li>
<li><a href="../../view/single_view.html" title="single_view"><tt class="computeroutput"><span class="identifier">single_view</span></tt></a></li>
<li><a href="../../view/filter_view.html" title="filter_view"><tt class="computeroutput"><span class="identifier">filter_view</span></tt></a></li>
<li><a href="../../view/iterator_range.html" title="iterator_range"><tt class="computeroutput"><span class="identifier">iterator_range</span></tt></a></li>
<li><a href="../../view/joint_view.html" title="joint_view"><tt class="computeroutput"><span class="identifier">joint_view</span></tt></a></li>
<li><a href="../../view/transform_view.html" title="transform_view"><tt class="computeroutput"><span class="identifier">transform_view</span></tt></a></li>
<li><a href="../../view/reverse_view.html" title="reverse_view"><tt class="computeroutput"><span class="identifier">reverse_view</span></tt></a></li>
<li><a href="../../view/zip_view.html" title="zip_view"><tt class="computeroutput"><span class="identifier">zip_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"><div class="copyright-footer">Copyright <20> 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../concepts.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="bidirectional_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -0,0 +1,377 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Random
Access Sequence</title>
<link rel="stylesheet" href="../../../../../../../doc/html/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%"><tr>
<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>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="bidirectional_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="associative_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="fusion.sequence.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.sequence.concepts.random_access_sequence.description"></a><h5>
<a name="id491382"></a>
<a href="random_access_sequence.html#fusion.sequence.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="../../iterator/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.sequence.concepts.random_access_sequence.refinement_of"></a><h5>
<a name="id491433"></a>
<a href="random_access_sequence.html#fusion.sequence.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><p>
A Random Access Sequence
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">S</span></tt></span></dt>
<dd><p>
A Random Access Sequence type
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">N</span></tt></span></dt>
<dd><p>
An <a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
Integral Constant</a>
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">o</span></tt></span></dt>
<dd><p>
An arbitrary object
</p></dd>
<dt><span class="term"><tt class="computeroutput"><span class="identifier">e</span></tt></span></dt>
<dd><p>
A Sequence element
</p></dd>
</dl>
</div>
<a name="fusion.sequence.concepts.random_access_sequence.valid_expressions"></a><h5>
<a name="id491604"></a>
<a href="random_access_sequence.html#fusion.sequence.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"><table class="table">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Return type
</p>
</th>
<th>
<p>
Type Requirements
</p>
</th>
<th>
<p>
Runtime Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
<a href="../../iterator/concepts/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a>
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="special">=</span> <span class="identifier">o</span></tt>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
<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.
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequence.concepts.random_access_sequence.result_type_expressions"></a><h5>
<a name="id492064"></a>
<a href="random_access_sequence.html#fusion.sequence.concepts.random_access_sequence.result_type_expressions">Result
Type Expressions</a>
</h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Compile Time Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="identifier">N</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
<span class="identifier">N</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
</tbody>
</table></div>
<div class="sidebar"><p>
<span class="inlinemediaobject"><img src="../../../images/note.png" alt="note"></span> <tt class="computeroutput"><a href="../intrinsic/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> <span class="identifier">N</span><span class="special">&gt;</span></tt> returns the actual type returned by
<tt class="computeroutput"><a href="../intrinsic/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="../intrinsic/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> <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="../intrinsic/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> <span class="identifier">N</span><span class="special">&gt;</span></tt>.
</p></div>
<a name="fusion.sequence.concepts.random_access_sequence.expression_semantics"></a><h5>
<a name="id492694"></a>
<a href="random_access_sequence.html#fusion.sequence.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"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody><tr>
<td>
<p>
<tt class="computeroutput"><a href="../intrinsic/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>
</p>
</td>
<td>
<p>
The Nth element from the beginning of the sequence; see <a href="../intrinsic/functions/at.html" title="at"><tt class="computeroutput"><span class="identifier">at</span></tt></a>.
</p>
</td>
</tr></tbody>
</table></div>
<a name="fusion.sequence.concepts.random_access_sequence.models"></a><h5>
<a name="id492855"></a>
<a href="random_access_sequence.html#fusion.sequence.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="../../container/vector.html" title="vector"><tt class="computeroutput"><span class="identifier">vector</span></tt></a></li>
<li><a href="../../view/reverse_view.html" title="reverse_view"><tt class="computeroutput"><span class="identifier">reverse_view</span></tt></a></li>
<li>
<a href="../../view/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="../../view/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="../../view/zip_view.html" title="zip_view"><tt class="computeroutput"><span class="identifier">zip_view</span></tt></a>
(where adapted sequences are models Random Access Sequence)
</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"><div class="copyright-footer">Copyright <20> 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="bidirectional_sequence.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="associative_sequence.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
</body>
</html>