一个简单的iterator的代码

template < typename T >
class  ListItem
{
public:
 T value() 
const
 
{
  
return _value;
 }


 ListItem 
*next() const
 
{
  
return _next;
 }

protected:
private:
 T _value;
 ListItem 
*_next;
}
;
template
< typename T >
class  List
{
public:
protected:
private:
 ListItem
<T> *begin;
}
;

template
< typename Item >
class  ListIter  
{
public:
 ListIter();
 
virtual ~ListIter(){};

 Item 
*ptr;
 ListIter(Item 
*= 0) : ptr(p){}

 Item
& operator*() const 
 
{
  
return *ptr;
 }


 Item 
*operator->() const
 
{
  
return ptr;
 }


 
//pre increment operator
 ListIter& operator++()
 
{
  ptr 
= ptr->next();
  
return *this;
 }


 
//post increment operator
 ListIter operator++(int)
 
{
  ListIter tmp 
= *this;
  
++*this;
  
return tmp;
 }


 
bool operator==(const ListIter& i) const
 
{
  
return ptr == i.ptr;
 }


 
bool operator!=(const ListIter& i) const
 
{
  
return ptr != i.ptr;
 }

}
;

你可能感兴趣的:(iterator)