dlist.hh

Go to the documentation of this file.
00001 #ifndef DUNE_DLIST_HH
00002 #define DUNE_DLIST_HH
00003 
00004 #include <dune/common/exceptions.hh>
00005 
00006 namespace Dune {
00007 
00018 
00019   class DoubleLinkedListError : public RangeError {};
00020 
00022   template <class T> 
00023   class DoubleLinkedList {
00024   private:
00025         struct Element;   // Vorwaertsdeklaration fuer das Listenelement 
00026   public:
00027 
00030         class Iterator {
00031         private:
00033           Element* p;
00034         public:
00035 
00037           Iterator();
00038 
00040           bool operator!= (Iterator x) const;
00041 
00043           bool operator== (Iterator x) const;
00044 
00046           Iterator& operator++ ();
00047 
00049           Iterator operator++ (int);
00050 
00052           Iterator& operator-- ();
00053 
00055           Iterator operator-- (int);
00056 
00058           T& operator* () const;
00059 
00061           T* operator-> () const;
00062 
00063           friend class DoubleLinkedList<T>;
00064         } ;
00065 
00067         Iterator begin () const; 
00068 
00070         Iterator end () const;
00071 
00073         Iterator rbegin () const; 
00074 
00076         Iterator rend () const;
00077         
00078 
00080         DoubleLinkedList();
00081 
00083         DoubleLinkedList (const DoubleLinkedList<T>&);
00084 
00086         ~DoubleLinkedList();
00087 
00089         DoubleLinkedList<T>& operator= (const DoubleLinkedList<T>&);
00090 
00092         int size () const;
00093 
00097         Iterator insert_after (Iterator i, T& t);
00098 
00102         Iterator insert_before (Iterator i, T& t);
00103 
00105         void erase (Iterator i);
00106 
00107   private:
00108         struct Element {      // Typ fuer das Listenelement
00109           Element* next;    // Nachfolger
00110           Element* prev;    // Vorgaenger
00111           T item;           // Datum
00112           Element (T &t);   // setze next=prev=0
00113         };
00114 
00115         Iterator head;        // erstes Element der Liste
00116         Iterator tail;        // letztes Element der Liste
00117         int numelements;      // Anzahl Elemente in der Liste
00118   } ;
00119 
00120 }
00121 
00123 
00124 #include"dlist.cc"
00125 
00126 #endif

Generated on 12 Dec 2007 with Doxygen (ver 1.5.1)