GenericIterator
[Iterator facades]


Detailed Description

Generic Iterator class for writing stl conformant iterators for any Container class with operator[].

Using this template class you can create an iterator and a const_iterator for any Container class.

Imagine you have SimpleContainer and would like to have an iterator. All you have to do is provide operator[], begin() and end() (for const and for non-const).

    template<class T> 
    class SimpleContainer{
    public:
      typedef GenericIterator<SimpleContainer<T>,T> iterator;
  
      typedef GenericIterator<const SimpleContainer<T>,const T> const_iterator;

      SimpleContainer(){
        for(int i=0; i < 100; i++)
          values_[i]=i;
      }

      iterator begin(){
        return iterator(*this, 0);
      }

      const_iterator begin() const{    
        return const_iterator(*this, 0);
      }

      iterator end(){
        return iterator(*this, 100);
      }

      const_iterator end() const{    
        return const_iterator(*this, 100);
      }
  
      T& operator[](int i){
        return values_[i];
      }

  
      const T& operator[](int i) const{
        return values_[i];
      }
    private:
      T values_[100];
    };

See dune/common/test/iteratorfacestest.hh for details or Dune::QuadratureDefault in dune/quadrature/quadrature.hh for a real example.


Classes

class  Dune::GenericIterator< C, T, D >
 Generic class for stl conformant iterators for container classes with operator[]. More...

Generated on 12 Dec 2007 with Doxygen (ver 1.5.1)