//自己造容器--List/*1、iterator2、头迭代器3、尾迭代器4、链表长5、判空6、清除7、取头元素8、取尾元素9、头插入10、尾插入11、头删除12、尾删除13、插入函数14、删除函数*/template class List{private: //结点 struct Node { Object data; Node *prev; //前置指针 Node *next; //后置指针 Node(const Object & d = Object(), Node*p = NULL, Node*n = NULL) : data(d), prev(p), next(n){} };public: //迭代器 class const_iterator { public: const_iterator() :current(NULL){} //*重载 const Object & operator*()const { return retrieve(); } //pre++重载 const_iterator & operator++() //前置++,返回引用 { current = current->next; return *this; //this是一个指向iterator的指针 } //pre-- const_iterator & operator--() //前置--,返回引用 { current = current->prev; return *this; //this是一个指向iterator的指针 } //pos++重载 const_iterator operator++(int) //后置++,返回参数 { const_iterator old = *this; ++(*this); return old; } //pos-- const_iterator operator--(int) //后置--,返回参数 { const_iterator old = *this; --(*this); return old; } //==重载 bool operator==(const const_iterator & rhs)const { return current == rhs.current; } //!=重载 bool operator!=(const const_iterator & rhs)const { return !(current == rhs.current); } protected: //在一般迭代器中变为private Node*current; Object &retrieve()const { return current->data; } const_iterator(Node*p) :current(p){} friend class List