C++: Copy a Range of Elements

Bjarne-stroustrup
 


On line 7, we create a std::vector<int> called source containing a sequence of values that we wish to copy.

On line 9, we have another std::vector<int>, target1, which is initialised with 5 elements. We then use std::copy on lines 11–12 to copy values from source to target1. The first two iterator arguments denote the source range, and the third iterator argument denotes the target range. We use std::begin and std::end to get these iterators for source and target1.

To demonstrate how we can copy into a container that does not yet contain any elements, we create an empty std::vector<int> called target2 on line 14. For the third argument of std::copy (lines 16–17), we call std::back_inserter to get an iterator that automatically calls push_back on target2 for each element that is copied.

#include <vector>
#include <algorithm>
#include <iterator>

int main()
{
	std::vector<int> source = {1, 2, 3, 4, 5};

	std::vector<int> target1(5);

	std::copy(std::begin(source), std::end(source),
	std::begin(target1));

	std::vector<int> target2;

	std::copy(std::begin(source), std::end(source),
	std::back_inserter(target2));
}