队列C ++

时间:2018-02-23 21:55:16

标签: c++ queue operator-overloading

我正在创建一个包含迭代节点的类的队列。

要做到这一点,我需要重新设置解除引脚和" ++"所以我可以写一个迭代。

但我真的不知道如何从重载中找回我想要的东西。我一直都拿着旗帜。

这是两个类:

typedef Person Item;
class Node;
class QIterator
{
private:
    Node *node;
public:
    QIterator(); // default
    QIterator(Node *n); // initialized
    Item &operator*() const;
    QIterator &operator++(); // prefix ++i
    QIterator operator++(int); // postfix i++
    bool operator!=(const QIterator &qi) const;
};
//---------------------------------------------------------------------------
class QList
{
private:
    Node *first, *last;
public:
    QList() :first(nullptr), last(nullptr) {};
    ~QList() {};
    void enque(Item item);
    bool deque(Item &item);
    bool del(Item item);
    bool isEmpty()const;
    QIterator begin()const { return QIterator(first); }
    QIterator end() const { return QIterator(nullptr); }
};

这是节点的公共类:

class Node
{
public:
    Node *next;
    Item data;
    Node(Node *n, Item newData) : next(n), data(newData) {}
};

我遇到的问题是重载。

Item& operator *()const;被认为是返回对datamember" node"节点中的数据的引用。指着。数据类型应为Item&。

Item &QIterator::operator*() const 
{

    return &Item;
}

重载: QIterator& operator ++();被认为是在" ++"之后返回对此指向的引用的引用。已经被剔除了。数据类型应为QIterator&。

QIterator &QIterator::operator++() {

    node = node->next;

    return *this->node;
}

这个带指针的东西实际上是我想要理解的东西,因为我可以想象一个程序使用它的速度有多快。我应该如何理解这一点并记住它是如何工作的。

重载QIterator运算符++(int);应该返回迭代器在" ++"之前指向的节点内部的内容。被执行。它返回dataype QIterator

QIterator QIterator::operator++(int) {

    return this;

    node = node->next;

}

0 个答案:

没有答案