c++11的碎碎念之lambda表达式

1760阅读 0评论2021-01-21 stolennnxb
分类:C/C++

c++11终于新增了lambda表达式这个东西,简单介绍下,其语法如下:

点击(此处)折叠或打开

  1. [captures](params)->return_type {// function body};

自己在看的时候,就是关于捕获这块有点蒙圈,单独拿出来记录下:
捕获分为两种:1. 值捕获;2. 引用捕获。跟函数参数传递过程中的值传递和引用传递非常相像,示例代码如下:

点击(此处)折叠或打开

  1. int main(int argc, char** argv) {
  2.     int i=1234,j=5678,k=9;
  3.     auto f=[=,&j,&k]{return i+j+k;};
  4.     i=1;j=2;k=3;
  5.     std::cout<<f()<<std::endl;
  6.     return 0;
  7. }
输出结果是:1239,说明值传递是在值声明的那一刻搞定的,而引用传递每次传递的都是最新的值
上一篇:字符串匹配之BM算法(Boyer-Moore)
下一篇:c++11的碎碎念之checked_delete