SGI

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

Preconditions

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
[Silicon Surf] [STL Home]
Copyright © 1999 Silicon Graphics Inc. All Rights Reserved. TrademarkInformation