如何解决如何在C ++中使用双链表实现Iterator之前和之后的方法?
我有双重链表类,可以实现它的
Iterator&before(const Iterator&p)
和
Iterator&after(const Iterator&p)
方法,但实现了其他类(迭代器,节点)。我应该如何编码这些方法,将不胜感激
class Node {
public:
Node* next;
Node* prev;
Elem elem;
friend class Linkedlist;
Node(): next(NULL),prev(NULL)
{}
Node(Elem elem) : elem(elem)
{}
};
class Linkedlist {
private:
Node *head;
Node *tail;
int N;
public:
Iterator& before(const Iterator& p);
Iterator& after(const Iterator& p);
class Iterator {
private:
Node *iter;
//Iterator(Node* curr);
public:
friend class Linkedlist;
//rest of the methods
解决方法
在实现before
和after
方法之前,我们需要考虑某些情况。就像有人传递head
的迭代器作为before
方法的参数那样。
然后,我们可能必须返回带有空指针的局部迭代器,但是如果我们将l-value
的迭代器作为参数传递,则返回带有after
引用的局部变量确实是一个问题,并且对于tail
方法也是一个问题。
因此,请尝试使用具有递增/递减运算符重载的before
和after
方法来遍历,而不要使用begin
和end
。
参见std::vector
,std::list
等的界面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。