Idiom: Passing reverse iterator to a constructor
文字列\(s\)から反転した文字列\(t\)を作成するとき、これまではコピーして反転という処理をしていました。
std::string s("string"); : std::string t(s); std::reverse(ALL(t)); // tの内容は"gnirts"となる
今日なんとなくこの実装を見て目から鱗が落ちました。コンストラクタにリバースイテレータを渡してしまえばいいんですね。この発想はなかった。
std::string s("string"); std::string t(s.rbegin(), s.rend()); // tの内容は元々"gnirts"となる!
「何かを反転したもの」を得たいことはよくあるのでこの手法はこれから活躍しそうです。