Files
boost_fusion/doc/html/fusion/sequences/concepts/random_access_sequence.html
Tobias Schwinger ca6f831b96 adds documentation for functional module
[SVN r36959]
2007-02-15 23:11:24 +00:00

241 lines
14 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Random
Access Sequence</title>
<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<link rel="start" href="../../../index.html" title="Chapter 1. Fusion 2.0">
<link rel="up" href="../concepts.html" title="Concepts">
<link rel="prev" href="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="id964901"></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="id964949"></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"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
<dd>
A Random Access Sequence
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">S</span></code></span></dt>
<dd>
A Random Access Sequence type
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">N</span></code></span></dt>
<dd>
An integral constant
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">o</span></code></span></dt>
<dd>
An arbitrary object
</dd>
<dt><span class="term"><code class="computeroutput"><span class="identifier">e</span></code></span></dt>
<dd>
A Sequence element
</dd>
</dl>
</div>
<a name="fusion.sequences.concepts.random_access_sequence.valid_expressions"></a><h5>
<a name="id965072"></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"><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><code class="computeroutput"><a href="../intrinsics/functions/begin.html" title="begin"><code class="computeroutput"><span class="identifier">begin</span></code></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code></td>
<td><a href="../../iterators/concepts/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a></td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/functions/end.html" title="end"><code class="computeroutput"><span class="identifier">end</span></code></a><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code></td>
<td><a href="../../iterators/concepts/random_access_iterator.html" title="Random
Access Iterator">Random
Access Iterator</a></td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><code class="computeroutput"><span class="identifier">at</span></code></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></code></td>
<td>Any
type</td>
<td> </td>
<td>Constant</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><code class="computeroutput"><span class="identifier">at</span></code></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></code></td>
<td>Any
type</td>
<td>
<code class="computeroutput"><span class="identifier">s</span></code>
is mutable and <code class="computeroutput"><span class="identifier">e</span> <span class="special">=</span> <span class="identifier">o</span></code>,
where <code class="computeroutput"><span class="identifier">e</span></code> 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="id965386"></a>
<a href="random_access_sequence.html#fusion.sequences.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>Expression</th>
<th>Compile Time Complexity</th>
</tr></thead>
<tbody>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/metafunctions/begin.html" title="begin"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">begin</span></code></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></code></td>
<td>Amortized constant
time</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/metafunctions/end.html" title="end"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">end</span></code></a><span class="special">&lt;</span><span class="identifier">S</span><span class="special">&gt;::</span><span class="identifier">type</span></code></td>
<td>Amortized constant
time</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/metafunctions/at.html" title="at"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></code></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></code></td>
<td>Amortized constant
time</td>
</tr>
<tr>
<td><code class="computeroutput"><a href="../intrinsics/metafunctions/value_at.html" title="value_at"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at</span></code></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></code></td>
<td>Amortized constant
time</td>
</tr>
</tbody>
</table></div>
<p class="blurb">
<span class="inlinemediaobject"><img src="../../../images/note.png" alt="note"></span> <code class="computeroutput"><a href="../intrinsics/metafunctions/at.html" title="at"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></code></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></code> returns the actual type returned by
<code class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><code class="computeroutput"><span class="identifier">at</span></code></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></code>. In
most cases, this is a reference. Hence, there is no way to know the exact
element type using <code class="computeroutput"><a href="../intrinsics/metafunctions/at.html" title="at"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at</span></code></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></code>.The element at <code class="computeroutput"><span class="identifier">N</span></code>
may actually be a reference to begin with. For this purpose, you can use
<code class="computeroutput"><a href="../intrinsics/metafunctions/value_at.html" title="value_at"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at</span></code></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></code>.
</p>
<a name="fusion.sequences.concepts.random_access_sequence.expression_semantics"></a><h5>
<a name="id965885"></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"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>Expression</th>
<th>Semantics</th>
</tr></thead>
<tbody><tr>
<td><code class="computeroutput"><a href="../intrinsics/functions/at.html" title="at"><code class="computeroutput"><span class="identifier">at</span></code></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></code></td>
<td>The
Nth element from the beginning of the sequence; see <a href="../intrinsics/functions/at.html" title="at"><code class="computeroutput"><span class="identifier">at</span></code></a>.</td>
</tr></tbody>
</table></div>
<a name="fusion.sequences.concepts.random_access_sequence.models"></a><h5>
<a name="id966009"></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"><code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code></a></li>
<li><a href="../adapted/boost__array.html" title="boost::array"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span></code></a></li>
<li><a href="../containers/vector.html" title="vector"><code class="computeroutput"><span class="identifier">vector</span></code></a></li>
<li>
<a href="../views/iterator_range.html" title="iterator_range"><code class="computeroutput"><span class="identifier">iterator_range</span></code></a>
(where adapted sequence is a Random Access Sequence)
</li>
<li>
<a href="../views/transform_view.html" title="transform_view"><code class="computeroutput"><span class="identifier">transform_view</span></code></a>
(where adapted sequence is a Random Access Sequence)
</li>
<li><a href="../views/reverse_view.html" title="reverse_view"><code class="computeroutput"><span class="identifier">reverse_view</span></code></a></li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright © 2001-2005 Joel de Guzman, Dan Marsden</small></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="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>