第10章 泛型算法
1. find()泛型算法使用示例:
2. 只读算法accumulate:对所给范围的元素求和并返回. 注意accumulate的第3个参数决定着它的返回类型. 即如果第3个参数是double,就算迭代器里都是int,最终还是返回double类型的数.
3. 只读算法equal:比较前两个迭代器表示范围的所有元素是否与第3个迭代器表示的对应位置的元素都相同,如果相同返回true。两个容器类型可以不同,保存的元素类型也可以不同,只要元素之间可以比较即可.如string类型和const
char*类型之间的比较.
4. 写容器算法fill:将指定值赋予容器中的元素. 容器不能为空.
5. 使用back_inserter(一种插入迭代器)的示例:
6. 拷贝算法copy 和 replace. 只有replace_copy不换改变原迭代器所指的容器内的元素值.
7. 排序去重算法sort和unique.
注意:unique并不真正删除容器重复元素,它只不过是把重复元素用不重复元素的值覆盖,容器后面的空间依然有效,不过值是多少就不一定了.
8. 稳定排序stable_sort 与 定制操作:
9. lambda与find_if的用法:
10. for_earch算法:对迭代器范围内的每个元素调用一元谓词:
11. lambda的特性:
12. bind函数:P354
13. 插入迭代器back_inserter, front_inserter, inserter:
对插入迭代器it执行*it ,++it, it++,it--,--it操作没有任何作用.
假设auto it=inserter(vc,vc.begin()+1); 生成了一个插入迭代器,那么通过it=20插入元素的话,永远只插在vc.begin()+1的前面:
使用inserter:
使用back_inserter:
使用front_inserter:
14. 反向迭代器 P363
反向迭代器可以用过rbegin()和rend()方法获得,其++,--与普通迭代器的操作含义不同,需要注意. 可以用base()方法将一个反向迭代器转为普通迭代器.