|
发表于 2013-8-13 23:34:10
|
显示全部楼层
其实和下面的代码是一样的,只不过很多时候像test这样的小函数仅仅使用一次,因此希望在调用它的地方直接写出它的定义,且不需要给出函数名---于是就有了lambda表达式。这种表达式仅仅适合使用在函数定义体很短的时候,太长的话影响人们理解,还不如直接使用函数(或函数对象)。- #include <algorithm>
- #include <iostream>
- #include <vector>
- using namespace std;
-
- void test(int n) {
- cout << n << " is " << ((n % 2 == 0) ? "even" : "odd") << ".\n";
- }
- int main()
- {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- int evenCount = 0;
- //for_each(v.begin(), v.end(), [&evenCount](int n){cout << n << " is " << ((n % 2 == 0) ? "even" : "odd") << ".\n"; });
- for_each(v.begin(),v.end(),test);
- }
复制代码 |
|