1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<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_backward</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_backward</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="BidirectionalIterator.html">BidirectionalIterator</A>1, class <A href="BidirectionalIterator.html">BidirectionalIterator</A>2>
BidirectionalIterator2 copy_backward(BidirectionalIterator1 first,
BidirectionalIterator1 last,
BidirectionalIterator2 result);
</pre>
<h3>Description</h3>
<tt>Copy_backward</tt> copies elements from the range <tt>[first, last)</tt> to the range
<tt>[result - (last - first), result)</tt> <A href="#1">[1]</A>. That is, it performs the
assignments <tt>*(result - 1) = *(last - 1)</tt>, <tt>*(result - 2) = *(last - 2)</tt>,
and so on. Generally, for every integer <tt>n</tt> from <tt>0</tt> to <tt>last - first</tt>,
<tt>copy_backward</tt> performs the assignment <tt>*(result - n - 1) = *(last - n - 1)</tt>.
Assignments are performed from the end of the input sequence to the
beginning, <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 nonstandard
backward-compatibility header <A href="algo.h">algo.h</A>.
<h3>Requirements on types</h3>
<UL>
<LI>
BidirectionalIterator1 and BidirectionalIterator2 are
models of <A href="BidirectionalIterator.html">BidirectionalIterator</A>.
<LI>
BidirectionalIterator1's value type is convertible to
BidirectionalIterator2's value type.
</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 - (last - first), result)</tt> is a valid range.
</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(15);
<A href="iota.html">iota</A>(V.begin(), V.end(), 1);
copy_backward(V.begin(), V.begin() + 10, V.begin() + 15);
</pre>
<h3>Notes</h3>
<P><A name="1">[1]</A>
<tt>Result</tt> is an iterator that points to the <i>end</i> of the output
range. This is highly unusual: in all other STL algorithms that
denote an output range by a single iterator, that iterator points to
the beginning of the range.
<P><A name="2">[2]</A>
The order of assignments matters in the case where the input and
output ranges overlap: <tt>copy_backward</tt> may not be used if <tt>result</tt> is
in the range <tt>[first, last)</tt>. That is, it may not be used if the
end of the output range overlaps with the input range, but it may be
used if the beginning of the output range overlaps with the input
range; <tt><A href="copy.html">copy</A></tt> has opposite restrictions.
If the two ranges are completely nonoverlapping, of course, then
either algorithm may be used.
<h3>See also</h3>
<tt><A href="copy.html">copy</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>
|