轮子哥课程2

编程入门 行业动态 更新时间:2024-10-27 06:33:38

<a href=https://www.elefans.com/category/jswz/34/1742703.html style=轮子哥课程2"/>

轮子哥课程2

这里的代码有一部分不是很清楚。

#include <iostream>
#include <functional>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;void PrintVector(vector<int>& numbers)
{for (auto it = begin(numbers); it != end(numbers); it++){if (it != begin(numbers)){cout << ", ";}cout << *it;}cout << endl;
}bool IsOdd(int a)
{return a % 2 == 1;
}bool Not(bool b)
{return !b;
}bool And(bool a, bool b)
{return a && b;
}bool Or(bool a, bool b)
{return a || b;
}decltype(auto) GreaterThan(int x)
{return [=](int y){return y > x;};
}decltype(auto) EqualsTo(int x)
{return [=](int y){return y == x;};
}auto Compose = [](auto f,auto g)
{return [=](auto x){return f(g(x));};
}/*填空*/;auto Combine =[](auto c,auto f,auto g)
{return [=](auto x){return c(f(x),g(x));};
}
/*填空*/;int main()
{vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};{vector<int> odds;copy_if(begin(numbers), end(numbers), back_inserter(odds),IsOdd);PrintVector(odds);}{vector<int> evens;copy_if(begin(numbers), end(numbers), back_inserter(evens),Compose(Not, IsOdd));PrintVector(evens);}{vector<int> one_two_nine_ten;copy_if(begin(numbers), end(numbers), back_inserter(one_two_nine_ten),Combine(Or,Combine(And,Combine(Or, GreaterThan(1), EqualsTo(1)),Compose(Not, GreaterThan(2))),Combine(And,Combine(Or, GreaterThan(9), EqualsTo(9)),Compose(Not, GreaterThan(10)))));PrintVector(one_two_nine_ten);}return 0;
}

不是很清楚

auto Combine =[](auto c,auto f,auto g)
{return [=](auto x){return c(f(x),g(x));};
}

这里auto x 这个参数如何传递进来的。

更多推荐

轮子哥课程2

本文发布于:2024-02-17 04:25:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1692624.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:轮子   课程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!