Boost logo

Boost :

From: John Torjo (john.lists_at_[hidden])
Date: 2004-05-17 03:43:25

Neal D. Becker wrote:

>Thanks for the advice. I think I have it now.
> A function F accepts a pair of stl-style iterators as input. A nullary
>functor G can generate an output. Arrange for F to call G n times without
>storing to an intermediate sequence.
>Example: G is a random number generator.
>I wonder if there is a more elegant approach? Here is what I came up with.
Yes, there is.
rtl (Range Templates Library) has a generate_iterator.

You have a generator, and a stopper. From these, you create an input iterator
sequence. The stopper tells you when you've reached end.

For instance:
// input iterator sequence - 20 fibonacci numbers
generated(fibonacci(), gen_n(20))

// input iterator sequence - fibonacci numbers up to 200
generated(fibonacci(), gen_upto(200))

You can use it like this:
rng::copy( generated(fibonacci(), gen_upto(200)), std::ostream_iterator<int>(std::cout," "));

The rtl (and the generate* examples) can be found at:


John Torjo
-- john_at_[hidden]
-- - viewing/filtering logs is just too easy!

Boost list run by bdawes at, gregod at, cpdaniel at, john at