使用Lamda生成函数

#include <functional>

int main() {
    std::function<int()> fn[100];
    for( int i = 0; i < 100;i++ )
        fn[i] = [=]() {return i; };

    for( int i = 0; i < 100; i++ )
        printf( "%d\n", fn[i]() );

    return 0;
}

//result:
//0~99

1:
std::function<int()> fn[100]
等于缩写了下面的:
typedef int (*TypeFn)();
TypeFn fn[100];
时间: 2024-12-14 06:05:16

使用Lamda生成函数的相关文章

【BZOJ 3028】 3028: 食物 (生成函数)

3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 569  Solved: 382 Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他有多么NC,他又幻想了他应该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数. 他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等 当然,他又有一些稀奇古怪的限制: 每种食物的限制如下: 承德汉堡:偶数个 可乐:0个或1

BZOJ 3028 食物 ——生成函数

把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方案数. 大概就是C(n+3,3) 前面还有一项是x,所以n--即可. 然后就A掉了. #include <cstdio> #include <cstring> #define ll long long const int inv=1668; const int md=10007; in

JAVA8新特性——Lamda表达式

JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ Lamda表达式,读作λ表达式,它实质属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类. 先来看看传统的匿名内部类调用方式: interface MyInterface{ void lMethod(); } public class Main { public static void test(MyInterface myInterface){ myInterface.lMethod(); } publi

《Java 8 实战》(二)—— Lamda

Lamda表达式可以理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表/函数主体/返回类型,可能还有一个可以抛出的异常列表. Lamda表达式由参数/箭头和主体组成: (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); 之前的代码形式: Comparator<Apple> byWeight = new Comparator<Apple>() { public int compa

生成函数

普通生成函数 cin>>n for(int i=0;i<=n;i++) { a[i]=1; b[i]=0; } for(int i=2;i<=n;i++) { for(int j=0;j<=n;j++) { for(int k=0;k+j<=n;k+=i) { b[k+j]+=a[j]; } } for(int z=0;z<=n;z++) { a[z] = b[z]; b[z] = 0; } } cout<<a[n]<<endl;

java中的Lamda语句

java8引入了lamda语句,应用场景如下: 1.代替匿名类 File file = new File("."); 匿名类语句实现文件名过滤: String[] fileList = file.list(new FileNameFilter(){ @Override public boolean accept(File dir, String name){ if (name.endsWith(".java") || new File(name).isDirecto

【小结】SG生成函数(Grundy函数)

SG生成函数(Grundy函数)小结 转移到子游戏x&y,则 sg[now]=sg[x]∧sg[y] 模板 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAX = 100007; const int MAX_S = 128; const int MAX_X = MAX; int sg[MAX], stone[MAX_S]; int

[.net 面向对象程序设计进阶] (5) Lamda表达式(二) 表达式树快速入门

[.net 面向对象程序设计进阶] (6) Lamda表达式(二) 表达式树快速入门 本节导读: 认识表达式树(Expression Tree),学习使用Lambda创建表达式树,解析表达式树. 学习表达式在程序设计中的优点:比如构造动态查询.动态构造表达式树完成未知对象属性访问,比反射的性能高出很多.我们可以说表达式树才是Lambda的精髓,是我们必须要熟练掌握并灵活运用的. 1.关于表达式树(Expression Tree) 表达式树以树形数据结构表示代码,其中每一个节点都是一种表达式,比如

C#学习记录(七)LINQ语句及LAMDA表达式

LINQ LINQ是一种集成在计算机语言里的信息查询语句,可以让编写者以代码的方式操作数据库. 在C#中,LINQ语句有两种写法. 这是第一种写法 IEnumerable<Customer> result = from customer in customers where customer.FirstName == "Donna“ select customer; 由于这种写法比较容易和SQL语言混淆,所以我更倾向于使用另一种写法 IEnumerable<Customer&g