如何做酒店网站设计,石家庄建设集团是国企吗,网站编程好学吗,网站建设工作会议list容器内部基本都是链表形式实现#xff0c;这里的迭代器实现的逻辑需要注意C语言中指针的转换。 list容器如同数据结构中的队列#xff0c;通常用链式结构进行存储。在这个容器中#xff0c;我们可以模仿系统的逻辑#xff0c;在头结点后设置一个“ 哨兵 ”#xff0c;… list容器内部基本都是链表形式实现这里的迭代器实现的逻辑需要注意C语言中指针的转换。 list容器如同数据结构中的队列通常用链式结构进行存储。在这个容器中我们可以模仿系统的逻辑在头结点后设置一个“ 哨兵 ”此结点前指头结点后指尾结点如下图 为保可以装纳所有类型的数据因此这里我们需使用类模板结点结构设置框架如下 templateclass T //模板 struct ListNode { ListNodeT* _next; //指向前结点的指针 ListNodeT* _last; //指向后结点的指针 T _data; //因不确定数据类型所以使用T类型的默认构造 ListNode(const T x T()) :_next(nullptr) , _last(nullptr) , _data(x) { } }; 显然迭代器也需使用类模板这里要注意的是迭代器的构造函数下面是模拟实现迭代器的构造函数前置(或--)后置(或--)解引用操作!和运算符重载的运用 templateclass T struct __list_iterator { typedef ListNodeT Node; //类型结点 typedef __list_iteratorT self; //类型迭代器 Node* _node; //结点 //构造函数 __list_iterator(Node* x) :_node(x) { } // it即后置 self operator() { _node _node-_next; return *this; } // it即前置 self operator(int) { self t(*this); _node _node-_next; return t; } // --it即后置-- self operator--() { _node _node-_last; return *this; } // it--即前置-- self operator--(int); { self t(*this); _node _node-_last; return t; } //解引用即访问结点中的数据 T operator*() { return _node-_data; } //以下是运算符重载 bool operator!(const self s) { return _node ! s._node; } bool operator(const self s) { return _node s._node; } }; 迭代器的目前其它初级功能实现与以上类似这里就不在一一列举后面会专门运用模拟迭代器的使用这里先了解其语法和逻辑使用。