2012-03-26 15 views
0

ここで理にかなっています)、より基本的な操作です:次へまたはシフトイテレータ階層

EDIT:実際には、数値シーケンス用のインターフェイスを設計しています。

答えて

1

あなたは間違った方向からこれを見ていると思います。あなたの最初のコード・スニペットでは、あなたは基本的に3つの方法があります:あなた秒で

SequentialIterator.next() 
RandomAccessIterator.next() // same as SequentialIterator.next() 
RandomAccessIterator.shift(int) 

を、あなたはまた、3つの方法がありますが、それらは同じものじゃない:

RandomAccessIterator.shift(int) 
SequentialIterator.shift(int) // same as RandomAccessIterator.shift(int) 
SequentialIterator.next() 

は、この中に見最初のバージョンだけが意味を成すことは明らかです:RandomAccessIteratorクラスはnext()メソッドを合理的に提供できますが、SequentialIteratorクラスはshift(int)メソッドを合理的に提供できません。

(これは、そのうちの一つは、そもそも他の継承持っているいくつかの理由がありますことを、もちろん、と仮定している。)

1

私は次のシフトの特定の種類のように思えるように、シフトはより基本的であると考えています。しかし、SequentialIteratorがRandomIteratorから派生し、逆もまた同様であると考えるのはちょっと奇妙です。

IteratorとIteratorHelperクラスの共通機能の両方を派生させることをお勧めします。