c++第五版练习10.21

练习10.21:编写一个lambda ,捕获一个局部int变量,并递减变量值,直至它变为0,。一旦变量变为0,再调用lambda应该不再递减变量,lambda应该返回个bool值,指出捕获的变量是否为0。

分析:1.lambda实现捕获局部int变量递减 ,说明被捕获的变量值可变,得到mutable;

    2.lambda的返回值为bool值,即true or false;

   3.返回条件是 判断 捕获的变量值是否为0;

#include<iostream>
#include<algorithm>
using namespace std;

void MyLambda(int a)
{
    auto f = [&a]()mutable->bool {--a; if (a == 0)return false; else return true; };
    cout << f() << endl; //打印结果
}
int main()
{
    int a=6;
    MyLambda(a);
    
    return 0;
}

 

posted on 2017-03-22 09:58  whitem  阅读(123)  评论(0编辑  收藏  举报