コンテナの各要素に対するiterationはコンテナの基本的な操作だけれど,一方で各隣接要素のペアに対するiterationっていうのにも良く出くわす.で,これの書き方は色々あるだろうけれど,いざ自分で書く段になって「どういう風に書くのが簡潔かつ綺麗なのかのぉ」と一瞬悩むことがしばしばある.なので,とりあえずSTLの中の人はどうやっているんでしょうねぇ,とadjacent_findの実装(@VC++7.1)を参考にしてみる.
vector<int> v; // .... vector<int>::iterator it = v.begin(); vector<int>::iterator prev; for(;(prev = it) != v.end() && ++it != v.end();){ // prev: ペアの前者 // it : ペアの後者 }
一見すると何の変哲も無いfor文だけれど,よくよく考えたらこれしかないっていう文に思えてくるから不思議.
#うげげ.宣言文にはカンマ演算子使えないやんけ.大失態じゃないか.ということで修正.