概述
算法对迭代器指定的元素范围进行操作,算法不依赖于容器类型
泛型算法
- 只读算法:
- 写算法:
- 排序:
- 其他:
定制操作
- 自定义sort
- lambda表达式
find_if,查找第一个符合条件的元素:
for_each,对每个元素调用:
隐式捕获:
让编译器根据lambda体中的代码推断要使用哪些变量
[=] [&]
混合使用隐式捕获和显示捕获,第一个元素必须是默认捕获方式
[&, c]
[=, &os]
可变lambda:改变被捕获的变量的值
返回类型:如果是单一的return语句,可以不指定返回类型
- 参数绑定:
函数适配器,接受一个可调用对象,生成一个新的可调用对象来适应原对象的参数列表
bind只能拷贝参数,如果希望传递引用对象,需要用标准库ref函数:
使用bind代替lambda:
迭代器
- 插入迭代器
操作:
插入迭代器类型:
back_inserter
front_inserter
inserter
使用:
- 流迭代器
istream_iterator:
使用istream_iterator绑定到流时,不立即从流中读取数据
标准库保证第一次解引用之前,从流中读取数据的操作完成
ostream_iterator:
必须绑定到一个指定的流
- 反向迭代器
++it:移动到前一个元素
--it:移动到下一个元素
- 移动迭代器
特定容器算法
list和forward_list的操作: