[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 10/16 19:40 / Filesize : 21 KB / Number-of Response : 53
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Oven/Egg総合スレ part1



4 名前:デフォルトの名無しさん [2009/01/06(火) 01:24:05 ]
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
#include <cctype>
#include <pstade/oven/transformed.hpp>
#include <pstade/oven/copied.hpp>
#include <pstade/oven/copied_to.hpp>
int main() {
  using namespace pstade::oven;
  std::string s = "HogeFooBar";
  std::vector<char> v = s | transformed(std::toupper) | copied; //当然パイプにパイプを重ねることが可能
  v | copied_to(std::ostreambuf_iterator<char>(std::cout));
  std::cout << std::endl;
}
出力: HOGEFOOBAR
transformedやcopied_toのように、関数呼出の形で引数を与えるものもある。

transformedは各要素に与えられた関数を適用したレンジを返す。Lispでいうmapだな。
もちろん関数オブジェクトも可。Boost.Lambdaもいけるはず。

copiedはここで打ち止めの意、vectorなどのコンテナへ初期化・代入できるようになる。ただし、std::stringへは上手くいかないようだ。
Ovenで | を通した結果の型はテンプレートの塊なので、どんな型か考えない方がいい。この点、C++0xのautoがやや待ち遠しい。

copied_toは指定された出力イテレータにコピーを送る。それは副作用としてなので、さらにパイプを続けられたはず。






[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<21KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef