《C++ primer》第五版 第十章 笔记
来源:互联网 发布:js的杀破狼为啥没了 编辑:程序博客网 时间:2024/06/10 19:16
泛型算法:算法即因为他们实现了一些经典算法的公共接口,泛型即他们可以用于不用类型的元素很多种容器类型。
大多数算法都定义在algorithm,一部分数值算法定义在头文件numeic中。
find(vec.cbegin(),vec.cend(),val)
迭代器令算法不依赖于容器但是依赖于元素类型
这些算法有一些基本的结构,理解算法最基本的方法就是了解他们是否读取元素,改变元素或者重排元素
只读算法:find,count,accumulate,equal
写容器算法:fill();
插入迭代器:back_inserter()
拷贝:copy
replace,接受两个参数,前两个是迭代器,表示输入序列,后两个一个是要搜索的值,连一个是新值,他将所有等于第一个值的元素替换为第二个值
重排容器元素的算法,sort
unique:重排vector 使得不重复的元素出现在vector的开始部分
定制操作:
谓词:一元谓词,二元谓词
谓词是一个可用的表达式,其结果是能用做条件的值
lambda表达式:
find_if():接受一对迭代器,表示一个范围,其第三个参数是一个谓词,find_if算法对输入序列中的每个元素调用给定的这个谓词,返回第一个使谓词返回非零值的元素。如果不存在,则返回尾迭代器。
lambda表达式是一个可调用的代码单元,可以理解其为一个未命名的内联函数。有一个返回类型,参数列表和一个函数体。可以定义定义在函数内部。
[ 捕获列表 ] (参数列表)->返回类型{ 函数体 }
可以忽略参数列表和返回类型,但是必须有函数体和捕获列表
如果lambda函数体包含任何单一return语句之外的内容,且未指定返回类型,则返回void
不能有默认参数
空捕获列表表明lambda不使用他所在函数中的任何局部变量
一个lambda通过将局部变量包含在其捕获列表中来指定将会使用这些变量。捕获列表只用于局部非static变量
变量的捕获可以是值或者引用
默认情况下,对于一个值被拷贝的变量,lambda不会改变气质,如果我们希望能改变一个被捕获的变量的值,即必须在参数列表首加上关键字mutable
当我们需要为一个lamdba定义返回类型时,必须使用尾置返回类型。即:->
back_inserter,front_inserter和inserter
反向迭代器:
递增一个反向迭代器会移动到前一个元素,递减则是向后移动一个元素。
- C++primer第五版第十章学习笔记
- c++primer第五版第十章练习
- 《C++ primer》第五版 第十章 笔记
- C++primer第五版笔记-第十章泛型算法
- 《C++primer(第五版)》学习笔记-第十章:泛型算法
- 《C Primer Plus 第五版》第十章编程练习
- c++primer第五版课后练习答案(第十章)
- C++primer(第五版)第十章 泛型算法
- C primer plus(第五版)编程练习第十章
- c++.primer.plus第五版第十章编程练习答案
- C++Primer 中文版 第五版 第十章课后习题答案
- c++primer第十章笔记
- 《C++primer》第五版 第四章 第五章 笔记
- C++primer第五版第五章学习笔记
- 记录——《C Primer Plus (第五版)》第十章编程练习第十题
- 记录——《C Primer Plus (第五版)》第十章编程练习第五题
- C++primer 第十章笔记 初稿
- C++Primer第五版【笔记】——第六章 函数
- linux处理目录的常用命令
- 欢迎使用CSDN-markdown编辑器
- 适配iOS 8
- CentOS 升级autoconf
- c# DataGridView控件的使用
- 《C++ primer》第五版 第十章 笔记
- 2014年读书郎程序设计创意参赛感想。
- JAVA中基本数据类型
- Java中参数的两种传递方式
- Android 里面的多线程操作备忘,关于Thread,Handler, Looper
- iOS 动画效果
- C++ 参数传递方式
- 前端开发优化
- C++类的继承和派生,访问控制