zoukankan      html  css  js  c++  java
  • C++ 11 笔记 (一) : lambda

    时至今日都是我咎由自取,错就是错,与任何人无关。掉进C++98的各种坑里无法自拔的抖M感,让我选择了华丽丽的无视C++11,导致今日面对开源的代码到各种看不懂的地步,一入C++深似海,我今天愿意承担一切后果。在努力摆脱小白的道路上,我必须再一次推倒我的三观,重新审视和坦然面对自己。

    一段时间没有更新博客了,简直凄凉。

    今天打算开几篇C++11的博客。看博容易,写博不易,且写且珍惜。。。

    lambda表达式在C++算是千呼万唤始出来了,常见写法有下面几种:

     1 auto lambda1 = [](std::string str) 
     2 {
     3     std::cout << str << std::endl;
     4 };
     5 
     6 int x = 3;
     7 auto lambda2 = [=](int a, int b)
     8 {
     9     return a > x;
    10 };
    11 
    12 auto lambda3 = [&](int a, int b)
    13 {
    14     x = 5;
    15     return a > b;
    16 };

    []表示不访问外部变量,[=]表示值访问,[&]表示引用访问。在上面的例子中,lambda1无法访问除str以外的变量,lambda2可以访问x的值,但是不能修改x的值,lambda3可以修改x的值。在 “=” 和 “&” 的后面是可以加变量名的,完全可以写成[=x, &y]。

    最后举一个岂止水简直水的例子,那就是std::sort

    1 int arr[] = { 1, 5, 2, 6, 3 };
    2 std::sort(arr, arr + 5, [](int x, int y) { return x > y; });

    差不多就是这样了~~~

  • 相关阅读:
    ubuntu 安装ftp,配置,和java调用
    ubuntu 安装ftp nginx tomcat,mysql
    idea安装插件
    使用spring boot,gradle,idea,js,html创建一个小的前后端程序
    使用浏览器,调试js代码
    spring boot 使用静态资源
    word使用
    latex 转word
    qsv转mp4
    qsv转换为mp4,下载腾讯视频为MP4格式
  • 原文地址:https://www.cnblogs.com/wolfred7464/p/3683901.html
Copyright © 2011-2022 走看看