pstade::oven::copied
#include <vector> #include <list> #include <assert.h> #include <pstade/oven/copied.hpp> int main(){ namespace oven = pstade::oven; namespace lambda = boost::lambda; int array[] = {0, 1, 2, 3, 4}; std::vector<int> array2 = array|oven::copied; std::list<int> array3 = array|oven::copied; assert( boost::equal(array2, array3) ); return 0; }
pstade::oven::copied は、他のコンテナ型に代入可能な range を返してくれるアダプタです。(って、認識で間違ってないと思います。多分。)
transformed や filterd 等でごにょごにょやって、最終的にコンテナにコピーするって使い方が普通なのかな?
namespace oven = pstade::oven; namespace lambda = boost::lambda; int array[] = {0, 1, 2, 3, 4}; std::list<int> array2 = array |oven::transformed(lambda::_1 + lambda::_1) |oven::copied; boost::for_each(array2, [](int n){ std::cout << n; });
[出力]
02468
あとこんなトリッキーな事も出来ます。
namespace oven = pstade::oven; namespace lambda = boost::lambda; int array[] = {0, 1, 2, 3, 4}; boost::tuple<std::vector<int>, std::vector<int> > hoge = boost::make_tuple(array|oven::copied, array|oven::copied);
[pstade]
ver 1.04.3