关于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. mvn install package区别

    package是把jar打到本项目的target下,而install时把target下的jar安装到本地仓库,供其他项目使用

  2. Laravel展示产品-CRUD之show

    上一篇讲了Laravel创建产品-CRUD之Create and Store,现在我们来做产品展示模块,用到是show,①首先我们先修改controller,文件是在/app/Http/Control ...

  3. 教你一步步composer安装Magento2.3

    以前外贸建站一直用zencart,这段时间ytkah比较有时间,就决定用magento来创建一下站点.magento不像普通的程序一样下载就可以直接安装,需要借助composer安装,还没没compo ...

  4. FastReport快速安装教程

    安装后需要覆盖的文件全部复制到安装目录 替换后的安装目录 选中Recompile右键必须以管理员运行 看图选择 编译后,需要汉化的话看下图选择 怎么添加Library直接看图按顺序进行 选择insta ...

  5. NYOJ 食物链(WA)

    1.WA代码 思路:预先分好3类,对每一行数据进行分类和真话假话判断 WA原因:前面某些行的数据 需要依赖 后面某些行给的数据 才能进行分类 初步改正思路( 对于前面给的无法直接分类的数据进行记录,等 ...

  6. React篇-报错信息:warning: Can't call setState (or forceUpdate) on an unmounted component.

    报错信息是: Warning: Can't call setState (or forceUpdate) on an unmounted component. This is a no-op, but ...

  7. k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点

    通过标签绑定 spec: nodeSelector: bigdata-node: bigdata containers: - env: pod只能运行在有bigdata-node: bigdata 标 ...

  8. 【LeetCode每天一题】Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head. You may not modify the value ...

  9. Case when then esle end

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ...

  10. crontab-rsync

    写一个shell脚本放到crontab中,该脚本利用rsync把远程同步到本地的话,需要把本地的公钥放到远程的authorized_keys:否则,手动执行脚本没问题,但是crontab执行就不会有效 ...