vector与list都是STL中非常重要的序列式容器,由于两个容器的底层结构不同,导致模拟实现其迭代器时不同。

vector的底层结构简单用指针模拟迭代器即可,但list不行,于是自定义了类来实现迭代器
template<class T, class Ref, class Ptr>
struct __list_iterator
{
typedef list_node<T> Node;
typedef __list_iterator<T, Ref, Ptr> Self;
Node* _node;
__list_iterator(Node* node)
:_node(node)
{
}
Ref operator*()
{
return _node->_data;
}
Ptr operator->()
{
return &_node->_data;
}
template<class T>
class list
{
typedef list_node<T> Node;
public:
typedef __list_iterator<T, T&, T*> iterator;
typedef __list_iterator<T, const T&, const T*> const_iterator;//一个模版实例化两个类型



被折叠的 条评论
为什么被折叠?



