私は Set クラスを作成して、それらが実際にどのように機能するかを把握し、独自の 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;
}