template
struct __list_iterator
{
typedef __list_node Node;
Node* _node;
__list_iterator(Node* node) : _node(node) {}
T& operator*() { return _node->_data; }
// 前缀版本
__list_iterator& operator++() {
_node = _node->_next;
return *this;
}
// 后缀版本
__list_iterator operator++(int) {
__list_iterator temp = *this;
_node = _node->_next;
return temp;
}
bool operator!=(const __list_iterator& it) const {
return _node != it._node;
}
};