C++11 lambda函数符

#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<ctime>
const long Size1 = 39L;
const long Size2 = 100 * Size1;
const long Size3 = 100 * Size2;
bool f3(int x) {return x % 3 == 0 ;}
bool f13(int x) {return x % 13 == 0;}

int main() {
    using std::cout;
    std::vector<int>numbers(Size1);
    std::srand(std::time(0));
    std::generate(numbers.begin(),numbers.end(),std::rand);

    cout << "sample size " << Size1 << std::endl;
    int count3 = std::count_if(numbers.begin(),numbers.end(),f3);
    cout << "count of numbers divisable by 3 " << count3 << std::endl;
    
    int count13 = std::count_if(numbers.begin(),numbers.end(),f13);
    cout << "count of numbers divisable by 13" << count13 << std::endl;

    numbers.resize(Size2);
    std::generate(numbers.begin(),numbers.end(),std::rand);
    cout << "sample size" << Size2 << std::endl;

    class f_mod {
    private :
    int dv;
    public :
    f_mod(int d = 1) : dv(d) { }
    bool operator () (int x) { return x % dv == 0; }
    };

    count3 = std::count_if(numbers.begin(),numbers.end(),f_mod(3));
    cout << "count of number div by 13" << count3 << std::endl;

    numbers.resize(Size3);
    std::generate(numbers.begin(),numbers.end(),std::rand);
    cout << "sample size" << Size3 << std::endl;
    count3 = std::count_if(numbers.begin(),numbers.end(),[](int x) {return x % 3 == 0 ; });
    cout << "count3 = " << count3 << std::endl;

    return 0;
}
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
#include<ctime>
const long Size = 390000L;
int main() {
    using std::cout;
    std::vector<int>numbers(Size);
    std::srand(std::time(0));
    std::generate(numbers.begin(),numbers.end(),std::rand);
    cout << "sample size = " << Size << std::endl;
    int count3 = std::count_if(numbers.begin(),numbers.end(),[](int x) {return x % 3 == 0;});
    cout << "count of numbers div by 3  " << count3 << std::endl;
    
    
    int count13 = 0;
    std::for_each(numbers.begin(),numbers.end(),[&count13](int x) { count13 += x % 13 == 0 ; });
    cout << " count 13 " << count13 << std::endl;
    
    count3 = count13 = 0;
    std::for_each(numbers.begin(),numbers.end(),[&] (int x) {count3 += x % 3 == 0 ; count13 += x % 13 == 0 ;});
    cout << "count3 " << count3 << " count13 " << count13 << std::endl;
    
    return 0;
}
    

 

转载于:https://www.cnblogs.com/Commence/p/5687355.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值