我正在创建一个包含迭代节点的类的队列。
要做到这一点,我需要重新设置解除引脚和" ++"所以我可以写一个迭代。
但我真的不知道如何从重载中找回我想要的东西。我一直都拿着旗帜。
这是两个类:
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;
}