微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C ++中使用双链表实现Iterator之前和之后的方法?

如何解决如何在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

解决方法

在实现beforeafter方法之前,我们需要考虑某些情况。就像有人传递head的迭代器作为before方法的参数那样。 然后,我们可能必须返回带有空指针的局部迭代器,但是如果我们将l-value的迭代器作为参数传递,则返回带有after引用的局部变量确实是一个问题,并且对于tail方法也是一个问题。 因此,请尝试使用具有递增/递减运算符重载的beforeafter方法来遍历,而不要使用beginend。 参见std::vectorstd::list等的界面。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。