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