Files
boost_mpl/doc/refmanual/inserter.html
T
2006-10-18 06:08:05 +00:00

111 lines
7.5 KiB
HTML

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- Copyright Aleksey Gurtovoy 2006. Distributed under the Boost -->
<!-- Software License, Version 1.0. (See accompanying -->
<!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.3.6: http://docutils.sourceforge.net/" />
<title>The MPL Reference Manual: Inserter</title>
<link rel="stylesheet" href="../style.css" type="text/css" />
</head>
<body class="docframe refmanual">
<table class="header"><tr class="header"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./algorithms-concepts.html" class="navigation-link">Prev</a>&nbsp;<a href="./reversible-algorithm.html" class="navigation-link">Next</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group">Back&nbsp;<a href="./reversible-algorithm.html" class="navigation-link">Along</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./algorithms-concepts.html" class="navigation-link">Up</a>&nbsp;<a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td>
<td class="header-group page-location"><a href="../refmanual.html" class="navigation-link">Front Page</a> / <a href="./algorithms.html" class="navigation-link">Algorithms</a> / <a href="./algorithms-concepts.html" class="navigation-link">Concepts</a> / <a href="./inserter.html" class="navigation-link">Inserter</a></td>
</tr></table><div class="header-separator"></div>
<div class="section" id="inserter">
<h1><a class="toc-backref" href="./algorithms-concepts.html#id390" name="inserter">Inserter</a></h1>
<div class="section" id="inserter-description">
<h3><a class="subsection-title" href="#description" name="description">Description</a></h3>
<p>An <a class="reference" href="./inserter.html">Inserter</a> is a compile-time substitute for STL <a class="reference" href="http://www.sgi.com/tech/stl/OutputIterator.html" target="_top">Output Iterator</a>.
Under the hood, it's simply a type holding
two entities: a <em>state</em> and an <em>operation</em>. When passed to a
<a class="reference" href="./transformation-algorithms.html">transformation algorithm</a>, the inserter's binary operation is
invoked for every element that would normally be written into the
output iterator, with the element itself (as the second
argument) and the result of the previous operation's invocation — or,
for the very first element, the inserter's initial state.</p>
<p>Technically, instead of taking a single inserter parameter,
<a class="reference" href="./transformation-algorithms.html">transformation algorithms</a> could accept the state and the &quot;output&quot;
operation separately. Grouping these in a single parameter entity,
however, brings the algorithms semantically and syntactically closer to
their STL counterparts, significantly simplifying many of the common
use cases.</p>
</div>
<div class="section" id="valid-expressions">
<h3><a class="subsection-title" href="#valid-expressions" name="valid-expressions">Valid expressions</a></h3>
<p>In the following table and subsequent specifications, <tt class="literal"><span class="pre">in</span></tt> is a model of <a class="reference" href="./inserter.html">Inserter</a>.</p>
<table border="1" class="table">
<colgroup>
<col width="43%" />
<col width="57%" />
</colgroup>
<thead valign="bottom">
<tr><th>Expression</th>
<th>Type</th>
</tr>
</thead>
<tbody valign="top">
<tr><td><tt class="literal"><span class="pre">in::state</span></tt></td>
<td>Any type</td>
</tr>
<tr><td><tt class="literal"><span class="pre">in::operation</span></tt></td>
<td>Binary <a class="reference" href="./lambda-expression.html">Lambda Expression</a></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="inserter-expression-semantics">
<h3><a class="subsection-title" href="#expression-semantics" name="expression-semantics">Expression semantics</a></h3>
<table border="1" class="table">
<colgroup>
<col width="35%" />
<col width="65%" />
</colgroup>
<thead valign="bottom">
<tr><th>Expression</th>
<th>Semantics</th>
</tr>
</thead>
<tbody valign="top">
<tr><td><tt class="literal"><span class="pre">in::state</span></tt></td>
<td>The inserter's initial state.</td>
</tr>
<tr><td><tt class="literal"><span class="pre">in::operation</span></tt></td>
<td>The inserter's &quot;output&quot; operation.</td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="inserter-example">
<h3><a class="subsection-title" href="#example" name="example">Example</a></h3>
<pre class="literal-block">
typedef <a href="./transform.html" class="identifier">transform</a>&lt;
<a href="./range-c.html" class="identifier">range_c</a>&lt;int,0,10&gt;
, <a href="./plus.html" class="identifier">plus</a>&lt;_1,_1&gt;
, <a href="./back-inserter.html" class="identifier">back_inserter</a>&lt; vector0&lt;&gt; &gt;
&gt;::type result;
</pre>
</div>
<div class="section" id="inserter-models">
<h3><a class="subsection-title" href="#models" name="models">Models</a></h3>
<ul class="simple">
<li><a class="refentry reference" href="./inserters-inserter.html"><tt class="refentry literal"><span class="pre">inserter</span></tt></a></li>
<li><a class="refentry reference" href="./front-inserter.html"><tt class="refentry literal"><span class="pre">front_inserter</span></tt></a></li>
<li><a class="refentry reference" href="./back-inserter.html"><tt class="refentry literal"><span class="pre">back_inserter</span></tt></a></li>
</ul>
</div>
<div class="section" id="inserter-see-also">
<h3><a class="subsection-title" href="#see-also" name="see-also">See also</a></h3>
<p><a class="reference" href="./algorithms.html">Algorithms</a>, <a class="reference" href="./transformation-algorithms.html">Transformation Algorithms</a>, <a class="refentry reference" href="./inserters-inserter.html"><tt class="refentry literal"><span class="pre">inserter</span></tt></a>, <a class="refentry reference" href="./front-inserter.html"><tt class="refentry literal"><span class="pre">front_inserter</span></tt></a>, <a class="refentry reference" href="./back-inserter.html"><tt class="refentry literal"><span class="pre">back_inserter</span></tt></a></p>
<!-- modtime: November 13, 2004 01:42:40 +0000 -->
<!-- Algorithms/Concepts//Reversible Algorithm -->
</div>
</div>
<div class="footer-separator"></div>
<table class="footer"><tr class="footer"><td class="header-group navigation-bar"><span class="navigation-group"><a href="./algorithms-concepts.html" class="navigation-link">Prev</a>&nbsp;<a href="./reversible-algorithm.html" class="navigation-link">Next</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group">Back&nbsp;<a href="./reversible-algorithm.html" class="navigation-link">Along</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./algorithms-concepts.html" class="navigation-link">Up</a>&nbsp;<a href="../refmanual.html" class="navigation-link">Home</a></span><span class="navigation-group-separator">&nbsp;|&nbsp;</span><span class="navigation-group"><a href="./refmanual_toc.html" class="navigation-link">Full TOC</a></span></td>
</tr></table></body>
</html>