#ifndef __LISTITERATOR_H__
#define __LISTITERATOR_H__
namespace xxx
{
template
struct ListNode_t;
/** @addtogroup 基础件
*
* @{
*/
/** @addtogroup 容器
*
* @{
*/
/*!
* @brief 列表迭代器
*/
template
struct ListIterator_t
{
ListNode_t
/*!
* @brief 构造函数
*/
ListIterator_t()
{
m_pNode = 0;
}
/*!
* @brief 构造函数
*/
ListIterator_t(const ListIterator_t
{
m_pNode = it.m_pNode;
}
/*!
* @brief 构造函数
*/
ListIterator_t(ListNode_t
{
m_pNode = pNode;
}
/*!
* @brief 获得迭代器的元素引用
*/
T& operator *()
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素引用
*/
const T& operator *() const
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素指针
*/
T* operator ->()
{
return &m_pNode->m_value;
}
/*!
* @brief ++后置操作符
*/
ListIterator_t& operator ++()
{
m_pNode = m_pNode->m_pNext;
return *this;
}
/*!
* @brief ++前置操作符
*/
ListIterator_t operator ++(int)
{
ListIterator_t _it = *this;
m_pNode = m_pNode->m_pNext;
return _it;
}
/*!
* @brief --后置操作符
*/
ListIterator_t& operator --()
{
m_pNode = m_pNode->m_pPrevious;
return *this;
}
/*!
* @brief --前置操作符
*/
ListIterator_t operator --(int)
{
ListIterator_t _it = *this;
m_pNode = m_pNode->m_pPrevious;
return _it;
}
/*!
* @brief 判断是否为同一个迭代器
*/
inline bool operator ==(const ListIterator_t &it) const
{
return m_pNode == it.m_pNode;
}
/*!
* @brief 判断是否不为同一个迭代器
*/
inline bool operator !=(const ListIterator_t &it) const
{
return m_pNode != it.m_pNode;
}
/*!
* @brief 设置为另一个迭代器
*/
ListIterator_t & operator =(const ListIterator_t &it)
{
m_pNode = it.m_pNode;
return *this;
}
};
/*!
* @brief 列表反向迭代器
*/
template
struct ListReverseIterator_t
{
ListNode_t
/*!
* @brief 构造函数
*/
ListReverseIterator_t()
{
m_pNode = 0;
}
/*!
* @brief 构造函数
*/
ListReverseIterator_t(const ListReverseIterator_t
{
m_pNode = it.m_pNode;
}
/*!
* @brief 构造函数
*/
ListReverseIterator_t(ListNode_t
{
m_pNode = pNode;
}
/*!
* @brief 获得迭代器的元素引用
*/
T& operator *()
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素引用
*/
const T& operator *() const
{
return m_pNode->m_value;
}
/*!
* @brief 获得迭代器的元素指针
*/
T *operator ->()
{
return &m_pNode->m_value;
}
/*!
* @brief ++后置操作符
*/
ListReverseIterator_t& operator ++()
{
m_pNode = m_pNode->m_pPrevious;
return *this;
}
/*!
* @brief ++前置操作符
*/
ListReverseIterator_t operator ++(int)
{
ListReverseIterator_t _it = *this;
m_pNode = m_pNode->m_pPrevious;
return _it;
}
/*!
* @brief --后置操作符
*/
ListReverseIterator_t& operator --()
{
m_pNode = m_pNode->m_pNext;
return *this;
}
/*!
* @brief --前置操作符
*/
ListReverseIterator_t operator --(int)
{
ListReverseIterator_t _it = *this;
m_pNode = m_pNode->m_pNext;
return _it;
}
/*!
* @brief 判断是否为同一个迭代器
*/
inline bool operator ==(const ListReverseIterator_t &it) const
{
return m_pNode == it.m_pNode;
}
/*!
* @brief 判断是否不为同一个迭代器
*/
inline bool operator !=(const ListReverseIterator_t &it) const
{
return m_pNode != it.m_pNode;
}
/*!
* @brief 设置为另一个迭代器
*/
ListReverseIterator_t& operator =(const ListReverseIterator_t &it)
{
m_pNode = it.m_pNode;
return *this;
}
};
/** @} */ // end of 容器
/** @} */ // end of 基础件
}
#endif