- generic algorithms的解释:
,具体而言
iterator
使得算法与容器类型无关:,但算法的实现成功与否有时依赖于(element type)元素类型:
- 通用算法的实现依赖于
iterator
,具体而言algorithm
–iterator
–container
:,即
- 通用算法中一些统一的模式:
cbegin
和cend
多用于只读的算法类型:- 涉及写入到容器的一些算法假设写入是安全的:
,可以使用
insert iterator
来保证安全: - 对容器元素进行reorder的算法有:
- 涉及元素间比较的算法可以自定义比较函数:
predicate
就是一个可以被调用同时返回值作为条件的表达式:lambda
:A lambda expression represents a callable unit of code.,如果未指定返回类型时:
- lambda表达式的形参禁止
default arguments
: lambda
的主要作用是魔改predicate
:,它的function body可以直接使用静态变量和其所在定义函数外的变量:
- class和lambda:
- lambda中捕获的变量与参数列表的变量不同:
,前者像在做初始化,后者像在赋值。此外捕获的变量也可以是引用传递:
- 保持lambda简洁:
mutable lambdas的理解是
:- 代替lambda表达式的bind函数(
function adaptor
):,bind的实例:
- 神秘的
ref
: - 不再多言,很优雅的
iterator
头文件: - 继
container adaptor
,function adaptor
,新的iterator adaptor
:,还有花里胡哨的
iostream Iterators
:,直接开装:
,以及reverse Iterators:
。
- 迭代器分类:
,简单而言:
- 该死的算法参数模式:
- 通用版本和容器定制版本的算法使用: