关于lambda表达式:

刷题的时候遇到一句代码不懂:

char ch = *it;
auto it2 = find_if(it, b.end(), [ch](char x){ return x != ch; });

find_if:当pred为真时,返回迭代器的值;若所有元素都不满足,返回最后一个元素位置。

这里的[ch](char x){ return x != ch; }是套用lambda表达式。

lambda表达式  c++中的lambda表达式详解

这里用的是第三种,捕获ch,参数是x,若x!=ch返回1,find_if的pred为真,停止迭代,返回此时的it。

“Lambda就是一个匿名函数,适用于要实现某个很简单函数,而且我们只会需要调用它一次的情况”----知乎,路人甲。

此外pred还可以用仿函数实现,参考这里以及lambda和仿函数,不知不觉又铺开好大一片,先保存,以后用到的时候再研究了。

关于迭代器:

比如for循环的终止条件,要用it!=xx.end(),it<=xx.end()是不行的。

上述find_if当然还是可以自己for循环查找一个,但没有find_if用起来方便,自己写for需要判断好边界条件,find_if是如果不满足pred直接返回最后一个元素索引。

-----2018.01.05-----

今天写了一段程序,用迭代器插入vector:

    vector<int>::iterator it = myVec1.begin();
cout << *it << endl;
myVec1.insert(it, , );
cout << *it << endl;

程序刚运行就崩溃了(看和做的区别,道理你都懂,一用就完蛋),仔细看C++ reference关于insert的部分:

正确的写法应该是:

    vector<int>::iterator it = myVec1.begin();
cout << *it << endl;
myVec1.insert(it, , );
it = myVec1.begin();
cout << *it << endl;

c++学习笔记(七)- lambda表达式 迭代器 算法的更多相关文章

  1. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  2. 高放的c++学习笔记之lambda表达式

    lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代, 通常结构是这样的[捕获列表](参数列表){函数部分} 捕获列表: lambda表达式如果在一个 ...

  3. Java学习笔记--Java8 Lambda表达式

    Java Lambda表达式入门:http://blog.csdn.net/renfufei/article/details/24600507 lambda内容的介绍:http://swiftlet. ...

  4. java8学习笔记之lambda表达式

    1.lambda表达式特点 lambda表达式可以理解为可传递的匿名函数的一种方式,无名称,但有参数列表和函数体以及返回类型,可能还有一个可抛出异常的列表. 2.lambda表达式基本语法 (para ...

  5. Python学习笔记:lambda表达式

    lambda表达式:通常是在需要一个函数,但又不想去命名一个函数的时候使用,即匿名函数. 示例如下: add = lambda x,y : x+ y add(1,2) # 结果为3 1.应用在函数式编 ...

  6. Java8新特性学习笔记(一) Lambda表达式

    没有用Lambda表达式的写法: Comparator<Transaction> byYear = new Comparator<Transaction>() { @Overr ...

  7. Java 学习笔记(11)——lambda 表达式

    在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...

  8. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

随机推荐

  1. maven项目里jar包显示灰色

    在spring boot项目加载Junit jar包之后,发现jar的颜色是灰色的,和其它的不一样. 带着好奇问了问身边的大神,大神解释说是因为pom文件里依赖项带上了<scope>tes ...

  2. 连连看java版

    主界面 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt. ...

  3. Android Studio 下载与安装配置

    一.下载 Android Studio下载链接:http://www.android-studio.org/ 1.进入安卓中文社区官网进行下载. 2.下载完成. 二.安装与配置环境 1.选择“此电脑” ...

  4. SSH的三种端口转发

    1.本地转发 本地转发,顾名思义就是把本地主机端口转发到远程主机端口. ssh -L 本地主机端口:远程主机:远程主机端口 举例:ssh -L 50000:www.google.com:80 user ...

  5. 关于hover的一个问题记录

    问题描述: 页面显示: 当鼠标移动到其中一个文件夹上面的时候,显示如下: 显示这样的效果的原理是:对于外层元素.collectionsbox添加hover之后,再去取里面的元素,比如说左上角的shar ...

  6. 第二节:Linux下检出项目和提交项目

    1.在linux下获取项目: 2.在linux中提交项目: 这时候我们在光标处添加注释,然后保存退出. 再查看下状态: 接下来问题来了: 解决办法: vim .git/config 修改:[remot ...

  7. ubuntu上设备树的编译

    由DTS文件生成DTB 文件,DTB是U-BOOT用来传递给LINUX内核的参数的一种文件形式. DTB:device tree blob 1,在内核中寻找:arch/arm/boot/dts/dig ...

  8. 前端 HTML 标签嵌套规则

    标签嵌套规则 块元素可以包含内联元素或某些块元素,但内联元素却不能包含块元素,它只能包含其它的内联元素,例如: <div><div></div><h1> ...

  9. 调用finecms栏目多图怎么实现

    finecms栏目自定义字段添加图集怎么调用出来?已经上传两张图片了,点击可以预览图片,前端显示不了,如下图所示.调用栏目多图这个要涉及到二次开发,首先要先添加栏目自定义字段,设为文件的格式,然后可以 ...

  10. 20170720 Celery 异步任务处理到Sql Server 发生死锁

    -- 1.  异常提示情况如下: 需要解决为什么引起死锁 -- 叹气 原因: 在使用Celery 启用了 配置参数 CELERYD_CONCURRENCY = 10  表示开了10块线程池. 有好处, ...