We've just seen our first few two-range algorithms. The <algorithm> header is full of two-range algorithms and their siblings, the one-and-a-half-range algorithms. What's the simplest possible such algorithm?
A reasonable answer would be: "Copy each data element from the first range into the second range." Indeed, the STL provides that algorithm, under the name std::copy:
template<class InIt, class OutIt>
OutIt copy(InIt first1, InIt last1, OutIt destination)
{
while (first1 != last1) {
*destination = *first1;
++first1;
++destination;
}
return destination;
}
Notice that this is a one-and-a-half-range algorithm. The standard library actually does not provide a two-range version of std::copy; the assumption is that if you are actually trying to write into a buffer, then...