【问题标题】:How to implement Iterator before and after method with double linked list in c++?如何在 C++ 中使用双链表实现迭代器前后方法?
【发布时间】:2020-11-12 17:05:11
【问题描述】:

我有我的双向链表类,我可以实现它
迭代器&之前(常量迭代器& p) 和
迭代器& 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

【问题讨论】:

  • 您可能希望首先将begin() 和end() 成员添加到链接列表

标签: c++ iterator constants doubly-linked-list


【解决方案1】:

在实现before 和after 方法之前,我们需要注意某些情况。就像有人将 head 的迭代器作为参数传递给 before 方法一样。 然后我们可能必须返回一个带有空指针的本地迭代器,但是如果我们将 tail 的迭代器作为参数传递,则返回一个带有 l-value 引用的本地确实是一个问题,对于 after 方法也是同样的问题。 因此,不要使用before 和after,请尝试使用具有递增/递减运算符重载的begin 和end 方法进行遍历。 见std::vector、std::list等接口

【讨论】:

  • 我确实有(开始和结束),如果我有,我应该如何解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2016-09-27
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多