[C/C++]C++管道数据流(Stream)的实现

仿照 Java8 Stream 实现的C++版本,使用时只需要包含一个头文件。

#include "stream.h"
using namespace cpp::stream;

同时提供了 -> 和 >> 两种类型的操作符调用:

ST3 arr[20] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };

int count1 = make_stream(arr, __crt_countof(arr))
    ->map([](const ST3& st)->ST2 {
        return st.st2;
    })->map([](const ST2& st)->ST1 {
        return st.st1;
    })->map([](const ST1& st)->ST0 {
        return st.st0;
    })->map([](const ST0& st)->int {
        return st.i;
    })->filter([](const int& i)->bool {
        return i > 6;
    })->filter([](const int& i)->bool {
        return i < 16;
    })->skip(4)->limit(4)->count();

cout << count1 << endl;

int count2 = make_stream(arr, __crt_countof(arr))
    >> map([](const ST3& st)->ST2 {
        return st.st2;
    }) >> map([](const ST2& st)->ST1 {
        return st.st1;
    }) >> map([](const ST1& st)->ST0 {
        return st.st0;
    }) >> map([](const ST0& st)->int {
        return st.i;
    }) >> filter([](const int& i)->bool {
        return i > 6;
    }) >> filter([](const int& i)->bool {
        return i < 16;
    }) >> skip(4) >> limit(3) >> count();

cout << count2 << endl;

项目地址: https://github.com/lvan100/cppstream

转载于:https://my.oschina.net/lvan100/blog/831886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值