P-Stade

random_shuffled range アダプタ

久しぶりに range アダプタでも. 考え方は oven::sorted と同じで,range からイテレータのリストを作り,そのリストをシャッフルします.結果として forward range にも対応できます. random_shuffled.hpp (要 P-Stade) #ifndef IORATE_RANDOM_SHUFFLED_H…

PStade.Egg.Monad で遊んでみた

Undocumented ですが,pstade/egg/monad/ 以下に Monad クラスと boost::optional をそのインスタンスとしたものがあります.実用向きとは言えませんが,ちょっと遊んでみました. monad_optional_test.cpp #define BOOST_RESULT_OF_USE_DECLTYPE #include <cmath> </cmath>…

split adaptor

リストの分割は 検索:デリミタを探す 分割:トークンのリストを作る(空のトークンを除去する、デリミタを残すなど) という2つの独立した操作に分解できると思ったので、2つの操作をポリシーでカスタマイズできるようなsplit iteratorを作り、それをベースに…

多相ファンクタのはなし

関数テンプレートは型がないというお話がありました。値もありません。 template <class T> T square(T x) { return x * x; } int main() { int array[] = {0, 1, 2, 3}; std::vector<int> v; // エラー!squareを引数として使用できない std::transform(array, array + 4, </int></class>…