IRIX 6.5 » Books » Developer »
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
find in page
generate
 |
 |
| Category: algorithms |
Component type: function |
Prototype
template <class ForwardIterator, class Generator>
void generate(ForwardIterator first, ForwardIterator last, Generator gen);
Description
Generate assigns the result of invoking
gen, a
function object
that takes no arguments, to each element in the range
[first,
last).
[1]
Definition
Defined in the standard header
algorithm, and in the nonstandard
backward-compatibility header
algo.h.
Requirements on types
-
ForwardIterator is a model of Forward Iterator. [2]
-
ForwardIterator is mutable.
-
Generator is a model of Generator.
-
Generator's result type is convertible to ForwardIterator's
value type.
Preconditions
-
[first, last) is a valid range.
Complexity
Linear. Exactly
last - first invocations of
gen.
[1]
Example
Fill a vector with random numbers, using the standard C library function
rand.
vector<int> V;
...
generate(V.begin(), V.end(), rand);
Notes
[1]
The function object gen is invoked for each iterator in
the range [first, last), 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.
[2]
The reason that generate requires its argument to be a mutable
Forward Iterator, rather than just an Output Iterator, is that
it uses a range [first, last) of iterators. There is no sensible
way to describe a range of Output Iterators, because it is
impossible to compare two Output Iterators for equality.
The generate_n algorithm does have an interface that permits use of
an Output Iterator.
See also
copy,
fill,
fill_n,
generate_n,
iota
Copyright ©
1999 Silicon Graphics, Inc. All Rights Reserved.
TrademarkInformation
Standard Template Library Programmer's Guide
(document number: 007-3426-004 / published: 1999-05-21)
table of contents | additional info | download
home/search |
what's new |
help