⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transform.html

📁 Standard Template Library (SOURCE + COMPLETE html man document)
💻 HTML
字号:
<HTML><!--  -- Copyright (c) 1996-1999  -- Silicon Graphics Computer Systems, Inc.  --  -- Permission to use, copy, modify, distribute and sell this software  -- and its documentation for any purpose is hereby granted without fee,  -- provided that the above copyright notice appears in all copies and  -- that both that copyright notice and this permission notice appear  -- in supporting documentation.  Silicon Graphics makes no  -- representations about the suitability of this software for any  -- purpose.  It is provided "as is" without express or implied warranty.  --  -- Copyright (c) 1994  -- Hewlett-Packard Company  --  -- Permission to use, copy, modify, distribute and sell this software  -- and its documentation for any purpose is hereby granted without fee,  -- provided that the above copyright notice appears in all copies and  -- that both that copyright notice and this permission notice appear  -- in supporting documentation.  Hewlett-Packard Company makes no  -- representations about the suitability of this software for any  -- purpose.  It is provided "as is" without express or implied warranty.  --  --><Head><Title>transform</Title><!-- Generated by htmldoc --></HEAD><BODY TEXT="#000000" LINK="#006600" ALINK="#003300" VLINK="#7C7F87" BGCOLOR="#FFFFFF"><A HREF="/"><IMG SRC="/images/common/sgilogo_small.gif" ALT="SGI Logo" WIDTH="80" HEIGHT="72" BORDER="0"></A><P><!--end header--><BR Clear><H1>transform</H1><Table CellPadding=0 CellSpacing=0 width=100%><TR><TD Align=left><Img src = "algorithms.gif" Alt=""   WIDTH = "194"  HEIGHT = "38" ></TD><TD Align=right><Img src = "function.gif" Alt=""   WIDTH = "194"  HEIGHT = "38" ></TD></TR><TR><TD Align=left VAlign=top><b>Category</b>: algorithms</TD><TD Align=right VAlign=top><b>Component type</b>: function</TD></TR></Table><h3>Prototype</h3><tt>Transform</tt> is an overloaded name; there are actually two <tt>transform</tt>functions.<pre>template &lt;class <A href="InputIterator.html">InputIterator</A>, class <A href="OutputIterator.html">OutputIterator</A>, class <A href="UnaryFunction.html">UnaryFunction</A>&gt;OutputIterator transform(InputIterator first, InputIterator last,                         OutputIterator result, UnaryFunction op);template &lt;class <A href="InputIterator.html">InputIterator</A>1, class <A href="InputIterator.html">InputIterator</A>2, class <A href="OutputIterator.html">OutputIterator</A>,          class <A href="BinaryFunction.html">BinaryFunction</A>&gt;OutputIterator transform(InputIterator1 first1, InputIterator1 last1,                         InputIterator2 first2, OutputIterator result,                         BinaryFunction binary_op);</pre>                   <h3>Description</h3><tt>Transform</tt> performs an operation on objects; there are two versionsof <tt>transform</tt>, one of which uses a single range of <A href="InputIterator.html">Input Iterators</A>and one of which uses two ranges of <A href="InputIterator.html">Input Iterators</A>.<P>The first version of <tt>transform</tt> performs the operation <tt>op(*i)</tt>for each iterator <tt>i</tt> in the range <tt>[first, last)</tt>, and assignsthe result of that operation to <tt>*o</tt>, where <tt>o</tt> is the correspondingoutput iterator.  That is, for each <tt>n</tt> such that <tt>0 &lt;= n &lt; last - first</tt>,it performs the assignment <tt>*(result + n) = op(*(first + n))</tt>.The return value is <tt>result + (last - first)</tt>.<P>The second version of <tt>transform</tt> is very similar, except that ituses a <A href="BinaryFunction.html">Binary Function</A> instead of a <A href="UnaryFunction.html">Unary Function</A>:it performs the operation <tt>op(*i1, *i2)</tt> for each iterator <tt>i1</tt> in therange <tt>[first1, last1)</tt> and assigns the result to <tt>*o</tt>, where<tt>i2</tt> is the corresponding iterator in the second input range andwhere <tt>o</tt> is the corresponding output iterator.  That is, for each <tt>n</tt> such that <tt>0 &lt;= n &lt; last1 - first1</tt>,it performs the assignment <tt>*(result + n) = op(*(first1 + n), *(first2+ n)</tt>.  The return value is <tt>result + (last1 - first1)</tt>.<P>Note that <tt>transform</tt> may be used to modify a sequence &quot;in place&quot;:it is permissible for the iterators <tt>first</tt> and <tt>result</tt> to be the same. <A href="#1">[1]</A><h3>Definition</h3>Defined in the standard header <A href="algorithm">algorithm</A>, and in the nonstandardbackward-compatibility header <A href="algo.h">algo.h</A>.<h3>Requirements on types</h3>For the first (unary) version: <UL><LI><tt>InputIterator</tt> must be a model of <A href="InputIterator.html">Input Iterator</A>.<LI><tt>OutputIterator</tt> must be a model of <A href="OutputIterator.html">Output Iterator</A>.<LI><tt>UnaryFunction</tt> must be a model of <A href="UnaryFunction.html">Unary Function</A>.<LI><tt>InputIterator</tt>'s value type must be   convertible to <tt>UnaryFunction</tt>'s argument type.<LI><tt>UnaryFunction</tt>'s result type must be convertible to a type in   <tt>OutputIterator</tt>'s set of value types.</UL>For the second (binary) version:<UL><LI><tt>InputIterator1</tt> and <tt>InputIterator2</tt>   must be models of <A href="InputIterator.html">Input Iterator</A>.<LI><tt>OutputIterator</tt> must be a model of <A href="OutputIterator.html">Output Iterator</A>.<LI><tt>BinaryFunction</tt> must be a model of <A href="BinaryFunction.html">Binary Function</A>.<LI><tt>InputIterator1</tt>'s and <tt>InputIterator2</tt>'s value types must   be convertible, respectively, to <tt>BinaryFunction</tt>'s first and second   argument types.<LI><tt>UnaryFunction</tt>'s result type must be convertible   to a type in <tt>OutputIterator</tt>'s set of value types.</UL><h3>Preconditions</h3>For the first (unary) version: <UL><LI><tt>[first, last)</tt> is a valid range.<LI><tt>result</tt> is not an iterator within the range <tt>[first+1, last)</tt>. <A href="#1">[1]</A><LI>There is enough space to hold all of the elements being copied.   More formally, the requirement is that    <tt>[result, result + (last - first))</tt> is a valid range. </UL>For the second (binary) version:<UL><LI><tt>[first1, last1)</tt> is a valid range.<LI><tt>[first2, first2 + (last1 - first1))</tt> is a valid range.<LI><tt>result</tt> is not an iterator within the range <tt>[first1+1, last1)</tt>    or <tt>[first2 + 1, first2 + (last1 - first1))</tt>.<LI>There is enough space to hold all of the elements being copied.   More formally, the requirement is that    <tt>[result, result + (last1 - first1))</tt> is a valid range.</UL><h3>Complexity</h3>Linear.  The operation is applied exactly <tt>last - first</tt> times in the case of the unary version, or <tt>last1 - first1</tt> in the caseof the binary version.<h3>Example</h3>Replace every number in an array with its negative.<pre>const int N = 1000;double A[N];<A href="iota.html">iota</A>(A, A+N, 1);transform(A, A+N, A, <A href="negate.html">negate</A>&lt;double&gt;());</pre><P>Calculate the sum of two vectors, storing the result in a third vector.<pre>const int N = 1000;<A href="Vector.html">vector</A>&lt;int&gt; V1(N);<A href="Vector.html">vector</A>&lt;int&gt; V2(N);<A href="Vector.html">vector</A>&lt;int&gt; V3(N);<A href="iota.html">iota</A>(V1.begin(), V1.end(), 1);<A href="fill.html">fill</A>(V2.begin(), V2.end(), 75);assert(V2.size() &gt;= V1.size() &amp;&amp; V3.size() &gt;= V1.size());transform(V1.begin(), V1.end(), V2.begin(), V3.begin(),          <A href="plus.html">plus</A>&lt;int&gt;());</pre><h3>Notes</h3><P><A name="1">[1]</A>The <A href="OutputIterator.html">Output Iterator</A> <tt>result</tt> is not permitted to be the same asany of the <A href="InputIterator.html">Input Iterators</A> in the range <tt>[first, last)</tt>, with theexception of <tt>first</tt> itself.  That is: <tt>transform(V.begin(), V.end(), V.begin(), fabs)</tt> is valid, but<tt>transform(V.begin(), V.end(), V.begin() + 1, fabs)</tt> is not.<h3>See also</h3>The <A href="functors.html">function object overview</A>, <tt><A href="copy.html">copy</A></tt>, <tt><A href="generate.html">generate</A></tt>, <tt><A href="fill.html">fill</A></tt><!-- start footer --><!-- Footer Begins --><STYLE TYPE="text/css"><!--TD.footer, TD.footer A{		font-family: Arial, helvetica, sans-serif;        	font-size: 8pt;}A.home {font-family: Arial, helvetica, sans-serif;}--></STYLE><P><A CLASS="home" HREF="index.html">STL Home</A><P><TABLE WIDTH="600" CELLPADDING="0" CELLPADDING="0" BORDER="0">	<TR>	    <TD ALIGN="RIGHT" CLASS="footer"><A HREF="/company_info/terms.html" TARGET="_top">terms of use</A> | <A HREF="/company_info/privacy.html" TARGET="_top">privacy policy</A></TD>	    <TD ALIGN="CENTER" CLASS="footer">&nbsp;|&nbsp;</TD>	    <TD ALIGN="LEFT" CLASS="footer"><A HREF="/cgi-bin/feedback/" TARGET="_top">contact us</A></TD>	</TR><TR>	    <TD ALIGN="RIGHT" CLASS="footer">Copyright &copy; 1993-2003 Silicon Graphics, Inc. All rights reserved.</TD>	    <TD ALIGN="CENTER" CLASS="footer">&nbsp;|&nbsp;</TD>	    <TD ALIGN="LEFT" CLASS="footer"><A HREF="/company_info/trademarks/" TARGET="_top">Trademark Information</A></TD>	</TR></TABLE><!-- Footer Ends --><!-- end footer --><P></BODY></HTML> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -