template <class OutputIterator, class Size, class Generator>
OutputIterator generate_n(OutputIterator first, Size n, Generator gen);
Description
Generate_n assigns the result of invoking gen, a function object
that takes no arguments, to each element in the range [first,
first+n). [1] The return value is first + n.
[1]
The function objectgen is invoked n times (once for
each iterator in the range [first, first+n)), as opposed to just
being invoked a single time outside the loop. This distinction is important
because a Generator need not return the same result each time
it is invoked; it is permitted to read from a file, refer to and
modify local state, and so on.