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 ...