📄 copy.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>copy</Title><!-- Generated by htmldoc --></HEAD><BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" ALINK="#ff0000"> <IMG SRC="CorpID.gif" ALT="SGI" HEIGHT="43" WIDTH="151"> <!--end header--><BR Clear><H1>copy</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><pre>template <class <A href="InputIterator.html">InputIterator</A>, class <A href="OutputIterator.html">OutputIterator</A>>OutputIterator copy(InputIterator first, InputIterator last, OutputIterator result);</pre> <h3>Description</h3><tt>Copy</tt> copies elements from the range <tt>[first, last)</tt> to the range<tt>[result, result + (last - first))</tt>. That is, it performs the assignments <tt>*result = *first</tt>, <tt>*(result + 1) = *(first + 1)</tt>,and so on. <A href="#1">[1]</A> Generally, for every integer <tt>n</tt> from <tt>0</tt> to <tt>last - first</tt>,<tt>copy</tt> performs the assignment <tt>*(result + n) = *(first + n)</tt>.Assignments are performed in forward order, <i>i.e.</i> in order of increasing <tt>n</tt>. <A href="#2">[2]</A><P>The return value is <tt>result + (last - first)</tt><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><UL><LI>InputIterator is a model of <A href="InputIterator.html">Input Iterator</A>.<LI>OutputIterator is a model of <A href="OutputIterator.html">Output Iterator</A>.<LI>InputIterator's value type is convertible to a type in OutputIterator's set of value types.</UL><h3>Preconditions</h3><UL><LI><tt>[first, last)</tt> is a valid range.<LI><tt>result</tt> is not an iterator within the range <tt>[first, last)</tt>.<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. <A href="#1">[1]</A></UL><h3>Complexity</h3>Linear. Exactly <tt>last - first</tt> assignments are performed.<h3>Example</h3><pre><A href="Vector.html">vector</A><int> V(5);<A href="iota.html">iota</A>(V.begin(), V.end(), 1);<A href="List.html">list</A><int> L(V.size());copy(V.begin(), V.end(), L.begin());assert(<A href="equal.html">equal</A>(V.begin(), V.end(), L.begin()));</pre><h3>Notes</h3><P><A name="1">[1]</A>Note the implications of this. <tt>Copy</tt> cannot be used to insertelements into an empty <A href="Container.html">Container</A>: it overwrites elements, ratherthan inserting elements. If you want to insert elements into a<A href="Sequence.html">Sequence</A>, you can either use its <tt>insert</tt> member function explicitly,or else you can use <tt>copy</tt> along with an <tt><A href="insert_iterator.html">insert_iterator</A></tt> adaptor.<P><A name="2">[2]</A>The order of assignments matters in the case where the input andoutput ranges overlap: <tt>copy</tt> may not be used if <tt>result</tt> is in therange <tt>[first, last)</tt>. That is, it may not be used ifthe beginning of the output range overlaps with the input range, butit may be used if the end of the output range overlaps with the inputrange; <tt><A href="copy_backward.html">copy_backward</A></tt> has opposite restrictions.If the two ranges are completely nonoverlapping, of course, theneither algorithm may be used.The order of assignments also matters if <tt>result</tt> is an <tt><A href="ostream_iterator.html">ostream_iterator</A></tt>,or some other iterator whose semantics depends on the order or assignments.<h3>See also</h3><tt><A href="copy_backward.html">copy_backward</A></tt>, <tt><A href="copy_n.html">copy_n</A></tt><!--start footer--> <HR SIZE="6"><A href="http://www.sgi.com/"><IMG SRC="surf.gif" HEIGHT="54" WIDTH="54" ALT="[Silicon Surf]"></A><A HREF="index.html"><IMG SRC="stl_home.gif" HEIGHT="54" WIDTH="54" ALT="[STL Home]"></A><BR><FONT SIZE="-2"><A href="http://www.sgi.com/Misc/sgi_info.html" TARGET="_top">Copyright © 1999 Silicon Graphics, Inc.</A> All Rights Reserved.</FONT><FONT SIZE="-3"><a href="http://www.sgi.com/Misc/external.list.html" TARGET="_top">TrademarkInformation</A></FONT><P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -