这段代码循环遍历输出vector中的每一个数,并判断这个数是奇数还是偶数。我们可以随时修改Lambda表达式而改变这个匿名函数的实现,修改对集合的操作。在这段代码中,C++使用一对中括号“[]”来表示Lambda表达式的开始,其后的”(int n)”表示Lambda表达式的参数。这些参数将在Lambda表达式中使用到。为了体会Lambda表达式的简洁,我们来看看同样的功能,如何使用函数对象实现:
- #include "stdafx.h"
- #include <algorithm>
- #include <iostream>
- #include <ostream>
- #include <vector>
- using namespace std;
- struct LambdaFunctor {
- void operator()(int n) const {
- cout << n << " ";
- if (n % 2 == 0) {
- cout << " even ";
- } else {
- cout << " odd ";
- }
- }
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- for_each(v.begin(), v.end(), LambdaFunctor());
- cout << endl;
- return 0;
- }
- #include "stdafx.h"
- #include <algorithm>
- #include <iostream>
- #include <ostream>
- #include <vector>
- using namespace std;
- struct LambdaFunctor {
- void operator()(int n) const {
- cout << n << " ";
- if (n % 2 == 0) {
- cout << " even ";
- } else {
- cout << " odd ";
- }
- }
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- vector<int> v;
- for (int i = 0; i < 10; ++i) {
- v.push_back(i);
- }
- for_each(v.begin(), v.end(), LambdaFunctor());
- cout << endl;
- return 0;
- }
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/