一个简单的迭代子(iterator)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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 *p = 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;

}

};

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航