我寫一組類,以獲得他們到底是如何工作的手柄,以及嘗試寫我自己的一個迭代器引用操作。據我所知,Iterator只是一個高層次的指針,它可以抽象出結構的迭代。寫作迭代
這就是說我知道迭代器的重要部分是++和*操作。我已經成功地創建並通過/遞減運算測試,但我有一個時間概念化什麼我需要的時候我尊重迭代器返回地獄。
是否返回它指向的對象?
這裏是我的set.h文件中的相關代碼:
class Set{
private:
struct Elem {
ELEMENT_TYPE info;
Elem *prev, *next;
};
Elem *_head, *_tail;
int _size;
public:
//...
class Iterator{
private:
Elem * _cur;
public:
Iterator(){}
Iterator(Elem*);
Iterator operator++(int);
Iterator operator++();
Iterator operator--(int);
Iterator operator--();
bool operator==(const Iterator& rhs);
bool operator!=(const Iterator& rhs);
Elem operator*();
};
//...
};
就像我說的,我返回「ELEM」迭代器指向的,是正確的?
Set::Elem* Set::Iterator::operator*(){
return _cur;
}
請閱讀[操作符重載FAQ](HTTP: //stackoverflow.com/questions/4421706/operator-overloading/4421719#4421719)。 – 2013-03-16 20:29:07
我看過這個了! – Joshua 2013-03-16 20:41:36
你錯過了顯示'value_type&operator *()的部分嗎? '通過參考返回,這與答案相同? – 2013-03-16 20:44:06