C++ lambda 表达式
来源:互联网 发布:php 数组元素相加 编辑:程序博客网 时间:2024/05/23 17:01
lambda 表达式可理解为匿名函数,或函数符,如函数指针。
bool f3(int x)
{
return x % 3 == 0;
}
等效于 [](int x){ return x % 3 == 0 }; 比较其形式,函数名被匿名了。
{
return x % 3 == 0;
}
等效于 [](int x){ return x % 3 == 0 }; 比较其形式,函数名被匿名了。
举个栗子
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <ctime>
using namespace std;
bool f3(int x)
{
return x % 3 == 0;
}
//[](int x){ return x % 3 == 0 };
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <algorithm>
#include <vector>
#include <ctime>
using namespace std;
bool f3(int x)
{
return x % 3 == 0;
}
//[](int x){ return x % 3 == 0 };
#define N1 33
#define N2 N1*10
#define N3 N2*10
int main()
{
class fmod
{
public: fmod(int d = 3) : dv(d) {};
bool operator() (int x)
{
return x % dv == 0;
}
private: int dv;
};
srand(time(0));
vector<int> Numbers(100);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers divisible by 3 " << count_if(Numbers.begin(), Numbers.end(), [](int x) {return x % 3 == 0; }) << endl;
Numbers.resize(N2);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers by f3 " << count_if(Numbers.begin(), Numbers.end(), f3) << endl;
Numbers.reserve(N3);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers divisible by 33 " << count_if(Numbers.begin(), Numbers.end(), fmod(33)) << endl;
getchar();
return 0;
}
#define N2 N1*10
#define N3 N2*10
int main()
{
class fmod
{
public: fmod(int d = 3) : dv(d) {};
bool operator() (int x)
{
return x % dv == 0;
}
private: int dv;
};
srand(time(0));
vector<int> Numbers(100);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers divisible by 3 " << count_if(Numbers.begin(), Numbers.end(), [](int x) {return x % 3 == 0; }) << endl;
Numbers.resize(N2);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers by f3 " << count_if(Numbers.begin(), Numbers.end(), f3) << endl;
Numbers.reserve(N3);
std::generate(Numbers.begin(), Numbers.end(), rand);
cout << "Number of rand numbers divisible by 33 " << count_if(Numbers.begin(), Numbers.end(), fmod(33)) << endl;
getchar();
return 0;
}
阅读全文
0 0
- 【c/c++】Lambda表达式
- C#--Lambda表达式
- C#:Lambda 表达式
- C++lambda表达式
- C++lambda表达式
- C# Lambda表达式
- C++:lambda表达式
- C#Lambda表达式
- 【c++】lambda表达式
- C++lambda表达式简记
- c#lambda表达式复习
- [C++]Lambda表达式简介
- 【C#】理解Lambda表达式
- 【C++】Lambda表达式
- C++lambda表达式
- C++Lambda表达式用法
- C++:lambda表达式
- 【C#】Lambda表达式
- qt下的跨目录多工程编译
- python学习笔记——列表
- 反射小练习
- Centos6和Ubuntu 下安装nvm和nodeJS开发环境
- MariaDB and MySQL Common Table Expressions and Window Functions Revealed.pdf 英文原版 免费下载
- C++ lambda 表达式
- c语言中函数声明的作用
- bootstrap之form样式
- java操作redis(二):存取对象操作
- 一个月过去了
- Beginning Java 9 Fundamentals, 2nd Edition.pdf 英文原版 免费下载
- Linux Ext文件系统
- SpringMVC 实现文件的上传与下载--较为原始
- Java设计模式--构建者模式(Builder)