C++学习笔记【第二部分第十章:泛型算法】
来源:互联网 发布:moment.js实现国际化 编辑:程序博客网 时间:2024/06/07 13:30
泛型算法
1. 算法永远不会改变底层容器的大小,因为算法不会执行容器操作,它们运行在迭代器之上
2. 算法可能改变容器中保存的元素的值,也可能在容器内移动元素,但永远不会直接删除或添加元素
3. 对于只读取而不改变元素的算法,通常最好使用cbegin() & cend()。find,count,equal是只读算法
4. 算法不检查写操作
5. 向目的位置迭代器写入数据的算法假定目的位置足够大,能够容纳要写入的数据
lambda
6. lambda只能使用尾置返回来指定返回类型
7. 如果lambda的函数体包含任何单一return语句之外的内容,且未指定返回类型,则返回void
8. lambda不能有默认参数、、
9. lambda可以定义在函数中
10. lambda只有在其捕获列表中捕获一个它所在函数中的局部变量才能在函数体中使用这个变量
11. 捕获列表只用于局部非static变量,lambda函数体可以直接使用局部static变量和在它所在函数之外声明的名字
12. lambda的变量捕获方式可以采用值或者引用
13. IO对象无拷贝或赋值。P279
14. 当以引用方式捕获一个变量时,必须保证在lambda执行时变量是存在的
15. lambda捕获列表P352
可变lambda
1. 默认情况下,一个值被拷贝的变量,lambda一般不会改变其值。使用mutable关键字,在lambda的参数列表后,可以改变捕获的局部变量的值。
2. 引用捕获的变量是否可修改,依赖于此引用指向的是否是const类型
参数绑定
1. 如果lambda的参数列表为空,通常可以用函数代替。
2. 对于捕获局部变量的lambda,使用标准库bind函数
3. auto newCallable = bind(callable, arg_list);
4. 可以使用bind重排参数顺序
5. 如果我们希望传递给bind函数一个对象而又不拷贝它,就必须使用标准库ref函数。p357
6. P361-P364 to be learnt
泛型算法结构
1. 通用的sort要求随机访问迭代器,因此不能用于list & forward_list
2. 对于list和forward_list应该优先使用成员函数而不是通用算法。P369
- C++学习笔记【第二部分第十章:泛型算法】
- 2016/12/08C++Primer学习笔记:第十章 泛型算法
- 《C++primer(第五版)》学习笔记-第十章:泛型算法
- objective-c学习笔记第四章《objective-c 类(第二部分)与java中的区别》
- 算法学习笔记----第二部分:排序和顺序统计量----第6章、堆排序
- python自然语言处理学习笔记第二章第二部分
- <深入理解C指针>学习笔记和总结 第六章 指针和结构体 第二部分
- hive学习笔记第二部分
- python核心编程第二版第十章学习笔记
- Flask学习笔记 评论部分第二部分
- 第二部分——第十一章/泛型算法
- 《C++primer(第五版)》学习之路-第十章:泛型算法
- 大数据学习笔记之四十九 推荐算法的主要算法第二部分
- 算法导论第二章学习笔记
- C++学习笔记【第二部分第八章:IO类】
- C++学习笔记【第二部分第九章:顺序容器】
- C++学习笔记【第二部分第十一章:关联容器】
- C++学习笔记【第二部分第十二章:动态内存】
- maven资源文件的相关配置才会在编译后的target里面有
- cf 485d Maximum Value 【二分】
- UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性
- WEB篇一 初识html
- CodeForces
- C++学习笔记【第二部分第十章:泛型算法】
- UVA 11183 (最小树形图)
- Java 处理多线程
- dagger2@Scope的一点点
- 找到第三方库中objective-C类没公开的函数并使用NSInvocation调用这个函数
- DNS的解析杂谈,以及gethostbyname的弊端
- 【JS】深拷贝 vs 浅拷贝
- hdu 2516 取石子游戏(斐波拉契博弈)
- NLog