SGI

copy

Category: algorithms Component type: function

Prototype

template <class InputIterator
class OutputIterator>
OutputIterator copy(InputIterator first
InputIterator last

                    OutputIterator result);

Description

Copy copies elements from the range [first last) to the range [result result + (last - first)). That is it performs the assignments *result = *first *(result + 1) = *(first + 1) and so on. [1] Generally for every integer n from 0 to last - first copy performs the assignment *(result + n) = *(first + n). Assignments are performed in forward order i.e. in order of increasing n. [2]

The return value is result + (last - first)

Definition

Defined in the standard header algorithm and in the nonstandard backward-compatibility header algo.h.

Requirements on types

Preconditions

Complexity

Linear. Exactly last - first assignments are performed.

Example

vector<int> V(5);
iota(V.begin()
V.end()
1);

list<int> L(V.size());
copy(V.begin()
V.end()
L.begin());
assert(equal(V.begin()
V.end()
L.begin()));

Notes

[1] Note the implications of this. Copy cannot be used to insert elements into an empty Container: it overwrites elements rather than inserting elements. If you want to insert elements into a Sequence you can either use its insert member function explicitly or else you can use copy along with an insert_iterator adaptor.

[2] The order of assignments matters in the case where the input and output ranges overlap: copy may not be used if result is in the range [first last). That is it may not be used if the beginning of the output range overlaps with the input range but it may be used if the end of the output range overlaps with the input range; copy_backward has opposite restrictions. If the two ranges are completely nonoverlapping of course then either algorithm may be used. The order of assignments also matters if result is an ostream_iterator or some other iterator whose semantics depends on the order or assignments.

See also

copy_backward copy_n
[Silicon Surf] [STL Home]
Copyright © 1999 Silicon Graphics Inc. All Rights Reserved. TrademarkInformation