(十)泛型算法
来源:互联网 发布:2017年6月进出口数据 编辑:程序博客网 时间:2024/06/06 12:42
泛型算法在第二序列只有一个参数的时候,不检查长度是否满足第一个序列,交由程序员负责,危险
可调用对象:函数,函数指针,重载了调用运算符的类(那不是初始化?),lambda表达式(简易函数,或简易类).
lambda表达式,作用为简易函数,通常为内联,并且可以定义在函数内部,可以没有名字.但需要包含基本的返回类型,参数列表,函数体.
[捕获列表](参数列表) -> 尾置返回类型 { 函数体 }
lambda 要求返回类型使用 尾置返回类型
捕获列表是lambda所在函数中定义的局部变量的列表,即lambda可以使用所在函数中定义的局部变量,只需要在捕获列表中声明即可.在lambda被创建时,使用捕获列表初始化lambda类型的数据成员.(表现如此,本质待考证!),需要注意的是在创造lambda时捕获,而非在调用时.
如果我们以引用方式捕获一个变量,我们要确保调用lambda时,这个变量还是存在的.
可以忽略参数列表和返回类型,但必须永远包含捕获列表和函数体.捕获列表不能省略的理由其实是为了区分语法,识别lambda表达式,lambda不能有默认参数
auto f = [] {return 42}; //没有参数,可以省略//返回类型可以自动推断,只适合只有单条return 语句中,如果有return以外其他语句则需要显示说明返回类型
捕获列表可以自动推断,方法是在列表中使用 = 值,&引用.当混合使用隐士捕获和显示捕获时,捕获列表中的第一个元素必须是一个&或= 指定了默认的捕获方式.而显示捕获必须使用与隐式捕获不同的方式.
参数绑定 标准库 bind函数
auto check6 = bind(fnCheck, _1, 6);string s = "hello";bool b1 = check6(s);//check6 会返回 fnCheck(s, 6);
ref返回一个对象,包含给定的引用
ref(os);
iostream迭代器,将流读取转化为自增
istream_iterator<int> in_iter(cin), eof;
vector<int> vec(in_iter, eof);//- - 可以用来初始化构造,当然是运行时初始化
任何类型对象定义了>>运算符,就可以创建 istream_iterator 对象,只要类型定义了<<,就可以为其定义ostream_iterator.
反向迭代器,rbegin指向最后一个元素,rend指向第一个元素之前的元素,不论反向迭代器还是正常迭代器,begin第一个迭代器指向的元素都是存在的,而不是之前或之后的元素,即相同的反向与原迭代器指向的不是相同的元素.
- (十)泛型算法
- 十种排序算法的C++泛型实现
- 算法十
- 十种排序算法的C++泛型实现(转)
- 十大算法
- 十大经典算法
- 十大排序算法
- 十大算法
- 十大经典算法
- 十大基础算法
- 十大滤波算法
- 十种重要算法
- 十大算法
- 十大编程算法
- 十大编程算法
- 十大编程算法
- 十大算法
- 十大基础算法
- 梦想天空分外蓝,实习结束总结
- uva 439 - Knight Moves
- ubuntu server 12 LTS 安装 trac 笔记
- TQ2440移植yaffs2文件系统基于linux 2.6.30.4
- ios之协议传值(Protocol)
- (十)泛型算法
- 一个经验法则
- cvCopy与cvCloneImage的区别
- 图论之Dijkstra算法求最短路径
- 2014.3.1
- Mat 的一些基本的初始化
- JAVA方法中的参数用final来修饰的原因
- 谷歌
- SRAM与SDRAM的比较