merge iterator(boost::iterator_facadeによるアルゴリズムの模倣)

まだだ.まだ終わらんよ.
id:Cryolite:20040522#p4の続き.このときにはinplace_mergeに対応するiterator_adaptorを作りましたが,なら当然mergeに対応するiterator_adaptorも(最終的にはadaptorじゃなくなりましたが)・・・ということで作ってみました.
merge_iterator.hpp
・・・が,予想通り重そうだわ,interfaceがむちゃくちゃだわと散々なiteratorが出来てしまいました.(というか,前にinplace_merge_iterator作ってたときは最初merge_iterator作ろうとしていたんですが,この予感があったので急遽inplace_merge_iterator変えたんです.)評価も何もしてませんが,やはり素直に普通のアルゴリズム使ったほうが良さげ・・・.というか,本質的に何が一番コストの原因になっているかというと,incrementとdereferenceの間にタイムラグがあることなんですよね.incrementの時に将来dereferenceされるであろう値のreference取れればだいぶすっきりするんですが,一部のiteratorはlvalueを返さないので・・・っておぉ!!(←書いてて何かを思いついた)

とりあえず今日は終わり.明日は絶対merge_iteratorの続きですw(予告先発