我编写了自己的容器类,其原始内部数据结构是std::list. 然后我需要创建自己的双向链表。我现在已经实现了我自己的双向链表以及我自己的链表迭代器,但是我在让它表现得像 时遇到了问题std::list,特别是在使用begin()and时end()。
据我了解,begin()应该指向第一个节点,并且end()应该指向最后一个元素之后的一个元素。我需要确保当我调用它时end()我可以递减回有效的最后一个元素。我还需要确保我可以进行正常的遍历,例如...
while (beg != end ) { do something; beg++; }
本质上,我的链表只使用包含数据元素、指向前一个节点的指针和指向下一个节点的指针的节点。
当我第一次尝试实现 myend()时,我只是将最后一个节点的 next 指针设为 a nullptr。它独立工作,但与 stl 的行为方式不同。
关于如何实现标准库begin()以及end()以相同方式实现的任何建议?