Boost logo

Boost :

From: Anthony Williams (anthwil_at_[hidden])
Date: 2002-09-09 06:22:21


Is it possible to use boost iterator adaptors to generate a bounded sequence?

As an example, I will use a modified version of the boost::generator_iterator
example, which writes the numbers 1 to 10:

#include <iostream>
#include <iterator>
#include <algorithm>
#include <boost/some_iterator_adaptor_header.hpp>

class my_generator
{
public:
  typedef int result_type;
  my_generator() : state(0) { }
  my_generator(int state_) : state(state_) { }
  int operator()() { return ++state; }
private:
  int state;
};

int main()
{
    my_generator gen,endgen(11);
    boost::some_iterator_adaptor_generator<my_generator>::type
        it = ,
        end= ;

    std::copy(boost::make_some_iterator_adaptor(gen),
              boost::make_some_iterator_adaptor(endgen),
              std::ostream_iterator<int>(std::cout,"\n"));
}

In my actual usage, the generator does more than increase a state; the point
is I want to stop when I reach a defined condition (which can be encoded as
another instance of the generator if required)

Anthony


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk