概要 C++でHaskellのクイックソートみたいなのを書きたくてvectorクラスを拡張してみた話。 経緯 なんとなくHaskellを勉強してたら、クイックソートを4行程度で書くことができるということを知って・・・ 遅いし厳密にいうとクイックソートではないけど、読みやすくて理解しやすい。こういうコードをC++で書けないものかと挑戦したかった。 コード解説 Haskell知らない人のためにコードを解説しておく。 qs (p:xs) qsという関数がリストを受け取ったとき、最初の要素をq、残りのリストをxsと定義する。 l = [x | x <- xs, x < p ] xsのpより小さい要素のリストをlと定義。 h = [x | x <- xs, x >= p] xsのp以上の要素のリストをhと定義。 = qs l ++ [p] ++ qs h qs l : 関数qsにlを渡す。 [p]