Files
boost_fusion/doc/html/fusion/sequences/concepts/random_access_sequence.html
Tobias Schwinger 9df373af5f revises function object concepts and functional module documenation to reflect
boost::result_of-based result computation


[SVN r38209]
2007-07-13 19:25:34 +00:00

374 lines
17 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="id973055"></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="id973102"></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 <a href="http://www.boost.org/libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
Integral Constant</a>
</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="id973240"></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>
<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>
<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>
</p>
</td>
<td>
<p>
<a href="../../iterators/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>
<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>
</p>
</td>
<td>
<p>
<a href="../../iterators/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>
<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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
<tr>
<td>
<p>
<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>
</p>
</td>
<td>
<p>
Any type
</p>
</td>
<td>
<p>
<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.
</p>
</td>
<td>
<p>
Constant
</p>
</td>
</tr>
</tbody>
</table></div>
<a name="fusion.sequences.concepts.random_access_sequence.result_type_expressions"></a><h5>
<a name="id973649"></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>
<p>
Expression
</p>
</th>
<th>
<p>
Compile Time Complexity
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<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>
</p>
</td>
<td>
<p>
Amortized constant time
</p>
</td>
</tr>
<tr>
<td>
<p>
<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>
</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> <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></div>
<a name="fusion.sequences.concepts.random_access_sequence.expression_semantics"></a><h5>
<a name="id974206"></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>
<p>
Expression
</p>
</th>
<th>
<p>
Semantics
</p>
</th>
</tr></thead>
<tbody><tr>
<td>
<p>
<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>
</p>
</td>
<td>
<p>
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>.
</p>
</td>
</tr></tbody>
</table></div>
<a name="fusion.sequences.concepts.random_access_sequence.models"></a><h5>
<a name="id974348"></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/reverse_view.html" title="reverse_view"><code class="computeroutput"><span class="identifier">reverse_view</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/zip_view.html" title="zip_view"><code class="computeroutput"><span class="identifier">zip_view</span></code></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"><small>Copyright © 2001-2007 Joel de Guzman, Dan Marsden, Tobias
Schwinger</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>