1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>transform</title> 5<link rel="stylesheet" href="../../../../../../../../doc/src/boostbook.css" type="text/css"> 6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"> 7<link rel="home" href="../../../../index.html" title="Chapter 1. Fusion 2.2"> 8<link rel="up" href="../functions.html" title="Functions"> 9<link rel="prev" href="filter_if.html" title="filter_if"> 10<link rel="next" href="replace.html" title="replace"> 11</head> 12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> 13<table cellpadding="2" width="100%"><tr> 14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> 15<td align="center"><a href="../../../../../../../../index.html">Home</a></td> 16<td align="center"><a href="../../../../../../../../libs/libraries.htm">Libraries</a></td> 17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td> 18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td> 19<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td> 20</tr></table> 21<hr> 22<div class="spirit-nav"> 23<a accesskey="p" href="filter_if.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="replace.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h5 class="title"> 27<a name="fusion.algorithm.transformation.functions.transform"></a><a class="link" href="transform.html" title="transform">transform</a> 28</h5></div></div></div> 29<h6> 30<a name="fusion.algorithm.transformation.functions.transform.h0"></a> 31 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.description"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.description">Description</a> 32 </h6> 33<p> 34 For a sequence <code class="computeroutput"><span class="identifier">seq</span></code> and 35 function object or function pointer <code class="computeroutput"><span class="identifier">f</span></code>, 36 <code class="computeroutput"><span class="identifier">transform</span></code> returns a new 37 sequence with elements created by applying <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> to each element of <code class="computeroutput"><span class="identifier">e</span></code> 38 of <code class="computeroutput"><span class="identifier">seq</span></code>. 39 </p> 40<h6> 41<a name="fusion.algorithm.transformation.functions.transform.h1"></a> 42 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.unary_version_synopsis"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.unary_version_synopsis">Unary 43 version synopsis</a> 44 </h6> 45<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> 46 <span class="keyword">typename</span> <span class="identifier">Sequence</span><span class="special">,</span> 47 <span class="keyword">typename</span> <span class="identifier">F</span> 48 <span class="special">></span> 49<span class="keyword">typename</span> <a class="link" href="../metafunctions/transform.html" title="transform"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">transform</span></code></a><span class="special"><</span><span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">transform</span><span class="special">(</span> 50 <span class="identifier">Sequence</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">seq</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span> 51</pre> 52<div class="table"> 53<a name="fusion.algorithm.transformation.functions.transform.t0"></a><p class="title"><b>Table 1.68. Parameters</b></p> 54<div class="table-contents"><table class="table" summary="Parameters"> 55<colgroup> 56<col> 57<col> 58<col> 59</colgroup> 60<thead><tr> 61<th> 62 <p> 63 Parameter 64 </p> 65 </th> 66<th> 67 <p> 68 Requirement 69 </p> 70 </th> 71<th> 72 <p> 73 Description 74 </p> 75 </th> 76</tr></thead> 77<tbody> 78<tr> 79<td> 80 <p> 81 <code class="computeroutput"><span class="identifier">seq</span></code> 82 </p> 83 </td> 84<td> 85 <p> 86 A model of <a class="link" href="../../../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward 87 Sequence</a> 88 </p> 89 </td> 90<td> 91 <p> 92 Operation's argument 93 </p> 94 </td> 95</tr> 96<tr> 97<td> 98 <p> 99 <code class="computeroutput"><span class="identifier">f</span></code> 100 </p> 101 </td> 102<td> 103 <p> 104 <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> 105 is a valid expression for each element <code class="computeroutput"><span class="identifier">e</span></code> 106 of <code class="computeroutput"><span class="identifier">seq</span></code>. <code class="computeroutput"><a href="http://www.boost.org/libs/utility/utility.htm#result_of" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span></code></a><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">E</span><span class="special">)>::</span><span class="identifier">type</span></code> 107 is the return type of <code class="computeroutput"><span class="identifier">f</span></code> 108 when called with a value of each element type <code class="computeroutput"><span class="identifier">E</span></code>. 109 </p> 110 </td> 111<td> 112 <p> 113 Transformation function 114 </p> 115 </td> 116</tr> 117</tbody> 118</table></div> 119</div> 120<br class="table-break"><h6> 121<a name="fusion.algorithm.transformation.functions.transform.h2"></a> 122 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.expression_semantics"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.expression_semantics">Expression 123 Semantics</a> 124 </h6> 125<pre class="programlisting"><a class="link" href="transform.html" title="transform"><code class="computeroutput"><span class="identifier">transform</span></code></a><span class="special">(</span><span class="identifier">seq</span><span class="special">,</span> <span class="identifier">f</span><span class="special">);</span> 126</pre> 127<p> 128 <span class="bold"><strong>Return type</strong></span>: A model of <a class="link" href="../../../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward 129 Sequence</a> 130 </p> 131<p> 132 <span class="bold"><strong>Semantics</strong></span>: Returns a new sequence, containing 133 the return values of <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">e</span><span class="special">)</span></code> for each element <code class="computeroutput"><span class="identifier">e</span></code> 134 within <code class="computeroutput"><span class="identifier">seq</span></code>. 135 </p> 136<h6> 137<a name="fusion.algorithm.transformation.functions.transform.h3"></a> 138 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.binary_version_synopsis"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.binary_version_synopsis">Binary 139 version synopsis</a> 140 </h6> 141<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> 142 <span class="keyword">typename</span> <span class="identifier">Sequence1</span><span class="special">,</span> 143 <span class="keyword">typename</span> <span class="identifier">Sequence2</span><span class="special">,</span> 144 <span class="keyword">typename</span> <span class="identifier">F</span> 145 <span class="special">></span> 146<span class="keyword">typename</span> <a class="link" href="../metafunctions/transform.html" title="transform"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">transform</span></code></a><span class="special"><</span><span class="identifier">Sequence1</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">Sequence2</span> <span class="keyword">const</span><span class="special">,</span> <span class="identifier">F</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">transform</span><span class="special">(</span> 147 <span class="identifier">Sequence1</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">seq1</span><span class="special">,</span> <span class="identifier">Sequence2</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">seq2</span><span class="special">,</span> <span class="identifier">F</span> <span class="identifier">f</span><span class="special">);</span> 148</pre> 149<div class="table"> 150<a name="fusion.algorithm.transformation.functions.transform.t1"></a><p class="title"><b>Table 1.69. Parameters</b></p> 151<div class="table-contents"><table class="table" summary="Parameters"> 152<colgroup> 153<col> 154<col> 155<col> 156</colgroup> 157<thead><tr> 158<th> 159 <p> 160 Parameter 161 </p> 162 </th> 163<th> 164 <p> 165 Requirement 166 </p> 167 </th> 168<th> 169 <p> 170 Description 171 </p> 172 </th> 173</tr></thead> 174<tbody> 175<tr> 176<td> 177 <p> 178 <code class="computeroutput"><span class="identifier">seq1</span></code> 179 </p> 180 </td> 181<td> 182 <p> 183 A model of <a class="link" href="../../../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward 184 Sequence</a> 185 </p> 186 </td> 187<td> 188 <p> 189 Operation's argument 190 </p> 191 </td> 192</tr> 193<tr> 194<td> 195 <p> 196 <code class="computeroutput"><span class="identifier">seq2</span></code> 197 </p> 198 </td> 199<td> 200 <p> 201 A model of <a class="link" href="../../../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward 202 Sequence</a> 203 </p> 204 </td> 205<td> 206 <p> 207 Operation's argument 208 </p> 209 </td> 210</tr> 211<tr> 212<td> 213 <p> 214 <code class="computeroutput"><span class="identifier">f</span></code> 215 </p> 216 </td> 217<td> 218 <p> 219 <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">e1</span><span class="special">,</span><span class="identifier">e2</span><span class="special">)</span></code> 220 is a valid expression for each pair of elements <code class="computeroutput"><span class="identifier">e1</span></code> of <code class="computeroutput"><span class="identifier">seq1</span></code> 221 and <code class="computeroutput"><span class="identifier">e2</span></code> of 222 <code class="computeroutput"><span class="identifier">seq2</span></code>. <code class="computeroutput"><a href="http://www.boost.org/libs/utility/utility.htm#result_of" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">result_of</span></code></a><span class="special"><</span><span class="identifier">F</span><span class="special">(</span><span class="identifier">E1</span><span class="special">,</span><span class="identifier">E2</span><span class="special">)>::</span><span class="identifier">type</span></code> 223 is the return type of <code class="computeroutput"><span class="identifier">f</span></code> 224 when called with elements of type <code class="computeroutput"><span class="identifier">E1</span></code> 225 and <code class="computeroutput"><span class="identifier">E2</span></code> 226 </p> 227 </td> 228<td> 229 <p> 230 Transformation function 231 </p> 232 </td> 233</tr> 234</tbody> 235</table></div> 236</div> 237<br class="table-break"><p> 238 <span class="bold"><strong>Return type</strong></span>: A model of <a class="link" href="../../../sequence/concepts/forward_sequence.html" title="Forward Sequence">Forward 239 Sequence</a>. 240 </p> 241<p> 242 <span class="bold"><strong>Semantics</strong></span>: Returns a new sequence, containing 243 the return values of <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">e1</span><span class="special">,</span> <span class="identifier">e2</span><span class="special">)</span></code> for each pair of elements <code class="computeroutput"><span class="identifier">e1</span></code> and <code class="computeroutput"><span class="identifier">e2</span></code> 244 within <code class="computeroutput"><span class="identifier">seq1</span></code> and <code class="computeroutput"><span class="identifier">seq2</span></code> respectively. 245 </p> 246<h6> 247<a name="fusion.algorithm.transformation.functions.transform.h4"></a> 248 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.complexity"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.complexity">Complexity</a> 249 </h6> 250<p> 251 Constant. Returns a view which is lazily evaluated. 252 </p> 253<h6> 254<a name="fusion.algorithm.transformation.functions.transform.h5"></a> 255 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.header"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.header">Header</a> 256 </h6> 257<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">algorithm</span><span class="special">/</span><span class="identifier">transformation</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 258<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">fusion</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">transform</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span> 259</pre> 260<h6> 261<a name="fusion.algorithm.transformation.functions.transform.h6"></a> 262 <span class="phrase"><a name="fusion.algorithm.transformation.functions.transform.example"></a></span><a class="link" href="transform.html#fusion.algorithm.transformation.functions.transform.example">Example</a> 263 </h6> 264<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">triple</span> 265<span class="special">{</span> 266 <span class="keyword">typedef</span> <span class="keyword">int</span> <span class="identifier">result_type</span><span class="special">;</span> 267 268 <span class="keyword">int</span> <span class="keyword">operator</span><span class="special">()(</span><span class="keyword">int</span> <span class="identifier">t</span><span class="special">)</span> <span class="keyword">const</span> 269 <span class="special">{</span> 270 <span class="keyword">return</span> <span class="identifier">t</span> <span class="special">*</span> <span class="number">3</span><span class="special">;</span> 271 <span class="special">};</span> 272<span class="special">};</span> 273<span class="special">...</span> 274<span class="identifier">assert</span><span class="special">(</span><a class="link" href="transform.html" title="transform"><code class="computeroutput"><span class="identifier">transform</span></code></a><span class="special">(</span><a class="link" href="../../../container/generation/functions/make_vector.html" title="make_vector"><code class="computeroutput"><span class="identifier">make_vector</span></code></a><span class="special">(</span><span class="number">1</span><span class="special">,</span><span class="number">2</span><span class="special">,</span><span class="number">3</span><span class="special">),</span> <span class="identifier">triple</span><span class="special">())</span> <span class="special">==</span> <a class="link" href="../../../container/generation/functions/make_vector.html" title="make_vector"><code class="computeroutput"><span class="identifier">make_vector</span></code></a><span class="special">(</span><span class="number">3</span><span class="special">,</span><span class="number">6</span><span class="special">,</span><span class="number">9</span><span class="special">));</span> 275</pre> 276</div> 277<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 278<td align="left"></td> 279<td align="right"><div class="copyright-footer">Copyright © 2001-2006, 2011, 2012 Joel de Guzman, 280 Dan Marsden, Tobias Schwinger<p> 281 Distributed under the Boost Software License, Version 1.0. (See accompanying 282 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>) 283 </p> 284</div></td> 285</tr></table> 286<hr> 287<div class="spirit-nav"> 288<a accesskey="p" href="filter_if.html"><img src="../../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../functions.html"><img src="../../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="replace.html"><img src="../../../../../../../../doc/src/images/next.png" alt="Next"></a> 289</div> 290</body> 291</html> 292