C++ 模拟实现模拟实现list(迭代器迭代器)实现代码实现代码
C++ 模拟实现模拟实现list(迭代器迭代器)
实现代码:实现代码:
#pragma once;
#include <assert.h>
#include<iostream>
#include <assert.h>
using namespace std;
template<class T>
struct __ListNode
{
T _data;
__ListNode<T>* _next;
__ListNode<T>* _prev;
__ListNode(const T& x)
:_data(x)
,_next(NULL)
,_prev(NULL)
{
}
};
template <class T,class Ref,class Ptr >
struct __ListIterator
{
typedef __ListNode<T> Node;
typedef __ListIterator<T,Ref,Ptr> Self;
__ListIterator(Node* node)
:_node(node)
{
}
Ref operator*()
{
return _node->_data;
}
Ptr operator->()
{
return &(_node->_data)
}
Self& operator++()
{
_node=_node->_next;
return *this;
}
Self& operator--()
{
_node=_node->_prev;
return *this;
}
Self operator++(int)
{
Self tmp=_node;
_node=_node->_next;
//return tmp;
return Self(tmp)
}
Self operator--(int)
{
Self tmp=(*this);
_node=_node->_prev;
return tmp;
}
bool operator!=(const Self& s) const
{
return this->_node!=s._node;
}
bool operator==(const Self& s) const
{
return this->_node==s._node;
}
Node* _node;
};
template<class T>
struct List
{
typedef __ListNode<T> Node;