乍一看,双链表似乎合情合理,但在我开始实施时,我遇到了跟踪当前位置的问题。我使用过std :: list迭代器,但处理极端情况(见下一部分)变得很痛苦。 以下是DS的要求:
链接列表最适合它。
当前位置光标(迭代器)的要求:
end
位置end
位置时,在最后插入元素之后,下一个迭代器advance将把它移动到这个元素。如果以前播放列表为空,则表示相同的行为push_front
向后移动将使用新添加的元素实施它的最佳做法是什么?是否有适合它的库(C ++)?
答案 0 :(得分:1)
std::list
是一个容器,支持从容器中的任何位置继续插入和删除元素。不支持快速随机访问(在您的情况下这不是问题)。它通常被实现为双向链表。与std::forward_list
相比,此容器提供双向迭代功能,同时节省空间。
添加,删除和移动列表中的元素或跨多个列表不会使迭代器或引用无效。只有删除相应的元素时,迭代器才会失效。
从我的观点来看,std::list
非常适合您所描述的问题。