據我所知,迭代器的結束函數應該返回null。當我嘗試返回nullptr時,程序崩潰。有人可以解釋結束函數應該如何表現嗎?空的迭代器結束函數?
末()
LinkList::Iterator LinkList::end()
{
return tail->next;
}
更新
這是我的鏈表類。其他兩個嵌套在裏面。
類
class LinkList
{
public:
class Node
{
public:
Node()
{
next = prev = NULL;
}
Node(int num)
{
data = num; next = prev = NULL;
}
int data;
Node *next;
Node *prev;
};
class Iterator
{
public:
Iterator(Node* ptr);
Iterator operator ++();
int operator *();
bool operator ==(Iterator it);
bool operator !=(Iterator it);
Node *ptr;
};
public:
LinkList();
virtual ~LinkList();
LinkList(const LinkList& other);
LinkList& operator=(LinkList& other);
bool insert(int num);
void insert(const initializer_list<int>& il);
void merge(LinkList & src);
Iterator *it;
Iterator begin();
Iterator end();
int size();
void clear();
private:
Node *head, *tail, *temp;
int count;
};
你明白錯了。 –
這裏有很多細節。迭代器高度依賴於它們正在迭代的容器。不過,我看到一個'LinkList'類型。嗯...... – InternetAussie
'end()'函數應該返回一個有效的迭代器,它代表它正在迭代的任何元素的末尾*。 – Galik