function template
std::copy
<algorithm>
template <class InputIterator, class OutputIterator>
OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result );
Copy range of elements
Copies the elements in the range
[first,last) into a range beginning at
result.
Returns an iterator to the end of the destination range (which points to the element following the copy of
last).
The behavior of this function template is equivalent to:
1 2 3 4 5 6
|
template<class InputIterator, class OutputIterator>
OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result )
{
while (first!=last) *result++ = *first++;
return result;
}
|
If both ranges overlap in such a way that
result points to an element in the range
[first,last), the function
copy_backward should be used instead.
Parameters
- first, last
- Input iterators to the initial and final positions in a sequence to be copied. The range used is [first,last), which contains all the elements between first and last, including the element pointed by first but not the element pointed by last.
- result
- Output iterator to the initial position in the destination sequence. This shall not point to any element in the range [first,last).
Return value
An iterator to the end of the destination range where elements have been copied.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// copy algorithm example
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main () {
int myints[]={10,20,30,40,50,60,70};
vector<int> myvector;
vector<int>::iterator it;
myvector.resize(7); // allocate space for 7 elements
copy ( myints, myints+7, myvector.begin() );
cout << "myvector contains:";
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << " " << *it;
cout << endl;
return 0;
}
|
Output:
myvector contains: 10 20 30 40 50 60 70 |
Complexity
Linear: Performs as many assignment operations as the distance between
first and
last.
See also
- copy_backward
- Copy range of elements backwards (function template
)
- fill
- Fill range with value (function template)
- replace
- Replace value in range (function template)