C++lambda表达式(vs2010)

从vs2010开始C++已经开始支持lambda表达式:

eg:
  vector<int> v;
 for( int i = 0; i < 10; ++i)
 {
    v.push_back(i);
 }
 foreach(v.begin(), v.end(); [](int n){cout<<n<<endl;}
 1、[]是lambda的前导符,它通知编译器其后引导的是一个lambda表达式。lambda表达式的工作就是定义匿名函数类并构造其对象,而后调用其括号算符重载函数;
 2、[&] 和 [=]分别表示引用所有可以引用的变量和使用所有可以使用的值;
 3、当lambda想返回值的时候需要使用 return-type的形式, auto fun = [&](int n)->{return n;};
 eg:
  int n = 0;
  auto fun = [=]()multable{ n= 1; };
  fun(); // 调用执行后 n == 0
  multable 类似于函数的参数传值,此关键字主要用于标识lambda表达式采用的是至传递的方式,在表达式语句块内对变量进行修改不会影响语句块外部的变量值;
  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章