私が理解するところでは、イテレータの終了機能はnullを返す必要があります。 nullptrを返そうとすると、プログラムがクラッシュします。誰かが最終的な機能がどう動くべきか説明することができますか?ヌルイテレータ終了関数?
エンド()
LinkList::Iterator LinkList::end()
{
return tail->next;
}
更新
は、ここに私のLINKLISTクラスです。他の2つは内部に入れ子になっています。
クラス
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