The C++ algorithm::copy function is used to copy all elements in the range [first, last) to the range starting at result.

### Syntax

```template <class InputIterator, class OutputIterator>
OutputIterator copy (InputIterator first,
InputIterator last,
OutputIterator result);
```

### Parameters

 `first` Specify initial position of the input iterator. The range used is [first,last). `last` Specify final position of the input iterator. The range used is [first,last). `result` Specify initial position of the output iterator where the result to be stored.

### Return Value

Returns an iterator pointing to the element that follows the last element copied to result sequence.

### Time Complexity

Linear i.e, Θ(n).

### Example:

In the below example, the algorithm::copy function is used to copy all elements of an array to a vector.

```#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main (){
int arr[] = {10, 20, 30};
vector<int> vec = {1, 1, 1, 1, 1};
vector<int>::iterator it;

//copy all elements from array to vector
copy(arr, arr+3, vec.begin());

cout<<"arr contains:";
for(int i = 0; i < 3; ++i)
cout<<" "<<arr[i];

cout<<"\nvec contains:";
for(it = vec.begin(); it != vec.end(); ++it)
cout<<" "<<*it;

return 0;
}
```

The output of the above code will be:

```arr contains: 10 20 30
vec contains: 10 20 30 1 1
```