私は、Haskell と関数型言語全般で多くの作業を行った後、C++ を学んでおり、常に同じ問題を解決しようとしていることがわかりました。
- 入力ストリームからデータを読み取る
- 特定のアルゴリズムに基づいてそれらをトークン化する
- トークンを処理する
これが Haskell の場合、すべてが怠惰であるという事実を単純に利用して、考えながら変換を記述すれば、ダウンストリームが消費されるときに適用されます。この正確なパターンを実行するライブラリさえあります (コンジットおよびパイプ)。
1 2 3 4 5 6 ...
シーケンスと出力を取得したいとしましょう12 34 56 ...
。ストリーム上で動作し、その場でデータを処理するアドホック コードの書き方がわかります。しかし、別のストリームからデータを (考えられる方法で) 変換することにより、新しいストリームを構築できる抽象化メカニズムがあるかどうかを知りたいです。この抽象化により、単一の要素を新しい値に単純にマッピングするだけでなく、処理中にデータをバッファリングできるようになります。
制限事項は次のとおりです。
- stdlib 以外のライブラリは使用できません。
- C++03 で動作する必要があります (C++11 の機能がないことを意味します)。
と思ったら、これは宿題ですか?そうですね、データのストリームを操作する必要がある多くのクラス割り当てを取得しています (これが、ライブラリと C++03 の制限がない理由です)。ループを使用してこれを行う方法がわからないわけではありませんがwhile
、stl に既存のストリーム抽象化が存在するかどうかを知りたいのですが、発見されて使用されるのを待っています。
しかし、これを行う唯一の方法が C++11 を使用することである場合は、知りたいです。