単一チェーンテーブル反復器の実装
951 ワード
以前、反復器は異なる容器のアクセス方式を統一していると言っていたので、チェーンテーブルにも独自の反復器があります.単一チェーンテーブルは後方に検索できないため、前方反復器しか実現できません.
反復器を使用するには、チェーンテーブルが反復器をサポートする必要があります.一般的には、次の2つの関数を追加すればいいです.
つまり、先頭ポインタの位置を返します.
以上がチェーンテーブル反復器クラスですが、中にはせっかくなのでいろいろな演算子のリロードかもしれませんが、正直->この記号のリロードはちょっとわかりませんので、
調べてから基礎編に記録する.
反復器を使用するには、チェーンテーブルが反復器をサポートする必要があります.一般的には、次の2つの関数を追加すればいいです.
iterator begin() {return iterator(firstNode);}
iterator end() {return iterator(NULL);}
つまり、先頭ポインタの位置を返します.
class iterator
{
public iterator(chainNode* theNode=NULL)
{
node=theNode;
}
T& operator*()const{return node->element;}
T* operator->()const {return &node->element;}
iterator& operator++()
{node=node->next;return this;}
iterator operator++(int)
{iterator old=*this;node=node->next;return old;}
bool operator!=(const iterator right)const
{return node!=right.node;}
bool operator==(const iterator right)const
{return node==right.node;}
protected:
chainNode*node;
}
以上がチェーンテーブル反復器クラスですが、中にはせっかくなのでいろいろな演算子のリロードかもしれませんが、正直->この記号のリロードはちょっとわかりませんので、
調べてから基礎編に記録する.