>>84
Boost.Spiritがfile_iteratorというランダムアクセスできるイテレータを持っている。
内部でどんな実装をしているかは知らないが。

あと、イテレータではないけど、pstadeのovenというライブラリのmemorizedが
汎用的なバッファ機構(メモ化)を備えていて、
たとえ、元のカテゴリが入力だったとしてもこれを通せば前進になる。
http://p-stade.sourceforge.net/oven/doc/html/oven/range_adaptors.html#oven.range_adaptors.memoized

問題点はよく知らない。
ただ、memorizedは汎用なので、vectorやdequeに貯め込んだり、
file_iteratorのようにストリームに特化して作ったほうが、より効率が良いとは思う。