【发布时间】:2014-03-18 14:44:05
【问题描述】:
我编写了自己的容器类,其原始内部数据结构是std::list。然后我需要创建自己的双向链表。我现在已经实现了我自己的双向链表以及我自己的链表迭代器,但我在让它表现得像 std::list 时遇到了问题,尤其是在 begin() 和 end() 时。
据我了解,begin() 应该指向第一个节点,end() 应该指向最后一个元素之后的一个元素。我需要确保当我调用end() 时,我可以递减回有效的最后一个元素。我还需要确保我可以进行正常的遍历,例如...
while (beg != end ) { do something; beg++; }
基本上我的链表只使用包含数据元素、指向前一个节点的指针和指向下一个节点的指针的节点。
当我第一次尝试实现我的end() 时,我只是让最后一个节点的下一个指针是nullptr。它独立工作,但与 stl 不同。
关于如何以与标准库相同的方式实现 begin() 和 end() 的任何建议?
【问题讨论】:
-
旁注:您是否考虑过为 std::list 使用自定义分配器?
标签: c++ list linked-list iterator stdlist