From: Toon Knapen (toon_at_[hidden])
Date: 2001-08-27 07:34:39


If others would also be interested I would like to see iterator_adaptors
extended with a strided_iterator_policy.

Using the strided_iterator_policy, every increment of the iterator will
advance the iterator according a user defined 'stride'

{ // begin example :

   template < int N >
   class stride_iterator_policy : public boost::default_iterator_policies
   {
   public:
     template <class BaseType>
     static void increment(BaseType& x) { std::advance( x, N ); }
   };

boost::iterator_adaptor< RealValues::const_iterator,
   stride_iterator_policy<3> > dof_it( dof_values.begin() );
prod = std::inner_product( shapes.begin(), shapes.end(), dof_it, 0.0 );

} // end example

The iterator is here used to traverse the first row of every column in a
column-major matrix.

This type of iterator is frequently used within for instance matrix
operations.

toon