/** * <p>Title: * 1--for_each() * 2--vector <int> V; * 3--[](int n){}-----lambda表达式</p> * <p>Description:2013年5月18日12:14:26</p> * <p>Copyright: Copyright (c) 2013</p> * <p>Filename: T1_lambdaException.cpp </p> * @author ZTX * @version 1.0 */ #include "stdafx.h" #include <iostream> #include <ostream> #include <algorithm>//提供了大量基于迭代器的非成员模版函数 eg:for_each #include <vector>//Vector 是一个类模板。不是一种数据类型。 Vector<int>是一种数据类型。 using namespace std; int _tmain(int argc, _TCHAR* argv[]) { vector <int> V; for( int i=0;i<8;i++) { V.push_back(i); } for_each( V.begin(),V.end(),[](int n){//V.begin()注意括号,是成员函数,不是成员变量 //for_each()-----为序列中的每个元素应用指定的函数 //[](int n){}-----lambda表达式----[] 操作符是 lambda 导引符, 它告诉编译器一个 lambda 表达式开始了。 (int n) 是 lambda 参数声明,它告诉编译器不具名函数对象类的函数调用操作符带有哪些参数, { cout << n << " "; } 是复合声明,它是不具名函数对象类的函数调用操作符的函数体。不具名函数对象类的函数调用操作符默认返回 void。 cout<<n; //下面两个条件都需要用它,所以直接放在前面 if(n%2==0){ cout<<"\teven\n"; }else{ cout<<"\todd\n"; } }); }