STL:私がすぐアルゴリズムを使いたがる理由

普通のfor分を書くのに比べてどうしてfor_eachなどの高階関数で書いた方が安心できるのか、その理由をなかなか明確な言葉にできなかったのだけど以下のようなことなんじゃないかと思い始めています。(その他さまざまな理由がEffectiveSTLとかにもたくさん書いてあるけどさ)

  • 標準化されている。
  • 局所デザインパターンとでも言うべき定石的なループ処理がそのままコードになっている。抽象化された蘊蓄とは無縁の実用性がそこにある。
  • ループの主役である反復要素の名前を考える必要がない。(iとか、valとか)
  • 実行も普通にfor文を書くのより高速な場合が多い。記述も普通のfor文書くより楽だ。
  • 高階関数で記述されたその行の処理の最終目的が分かりやすい。(コピーしたいのか条件判定してコピーしたいのか、内容の刷新か、どう刷新されるのか、  削除したいのか、どんな場合に削除されるのか、変換か、積算か、差分処理か、、などなど)
  • 分かりやすいから仲間との相互理解も確実。 
  • たぶん、for文でやっている処理の8割がたはアルゴリズムと適切なファンクタで簡潔に記述できる。
  • 地獄のように難解なfor文が書かれる機会が減る。またそれを読み解かなくてはいけなくなる機会も減る。目的は果たしているのだけれどわかりにくく書かれているfor文は非常に多い。breakとかcontinueとかが二つ以上あればもう動作テストしてみないと本当に動くかどうかは未知なレベルとなる。
  • 反復要素の名前なるものは存在しないので、「ぬあっ!こんなところにも[i]があった!いや、i+1か?」なんていう心配をしながら目を皿のようにしてiとかjを探す必要が全くない。
  • コンピュータのプログラムを書いているという感覚ではなく、むしろ簡潔な記述や文法そのものを楽しんでいるような感覚、言うなれば語学を習得しているような感覚だ。自分の書いた作文の意味がコンパイラに通じたときの喜びが非常に大きい。