#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//int main()
//{
// int a=10;
// [a]() mutable{//两份内存,修改lambda里面的变量不影响外面的变量
// a = a + 1;
// cout << a << endl;
// }();
// cout << a << endl;
//
//
// [&a]()mutable {//一份内存,
// a = a + 1;
// cout << a << endl;
// }();
// cout << a << endl;
//
// int b = 10, c = 100;
// [b,c]() mutable{//两个参数,或者几个参数可以这么传递,当然还是两份内存。
// b = b + 1;
// c = c + 1;
// cout << "b= " << b << " c= " << c << endl;
// }();
// cout << "b= " << b << " c= " << c << endl;
//
//
// [&b, &c]() mutable {//两个参数,或者几个参数可以这么传递,此时为一份内存
// b = b + 1;
// c = c + 1;
// cout << "b= " << b << " c= " << c << endl;
// }();
// cout << "b= " << b << " c= " << c << endl;
//
// [=]()mutable {//可以捕获所有的变量。两份内存。
// a = a + 1;
// b = b + 1;
// c = c + 1;
// cout << "a=" << a << " b=" << b<<" c=" << c << endl;
// }();
// cout << "a=" << a << " b=" << b << " c=" << c << endl;
//
// [&]()mutable {//可以捕获所有的变量。一份内存
// a = a + 1;
// b = b + 1;
// c = c + 1;
// cout << "a=" << a << " b=" << b << " c=" << c << endl;
// }();
// cout << "a=" << a << " b=" << b << " c=" << c << endl;
//
// [a,b,&c]()mutable {//可以选择捕获方式,是值捕获还是引用捕获。
// a = a + 1;
// b = b + 1;
// c = c + 1;
// cout << "a=" << a << " b=" << b << " c=" << c << endl;
// }();
// cout << "a=" << a << " b=" << b << " c=" << c << endl;
//}
int main()
{
vector<int>v;
for (int i = 0; i < 5; i++)
{
v.push_back(i + 1);
}
for (int i = 0; i < v.size(); i++)
{
if (v[i] % 2 == 0)
{
cout << v[i] << "是偶数" << endl;
}
else
{
cout << v[i] << "是奇数" << endl;
}
}
//高阶写法
for_each(v.begin(), v.end(), [&](int n) {/*开销比较大,所以用引用
每次遍历都是将v的类型传进来,再调用这个匿名函数
它提供了一种迭代的方式,告诉他起始迭代器,终点迭代器,
告诉每次迭代的时候执行一种方法
这种方法是匿名函数,然后将具体的内容传给int类型*/
if (n % 2 == 0)
{
cout << n << "是偶数" << endl;
}
else
{
cout << n << "是奇数" << endl;
}
});
return 0;
}