第二部分——第十一章/泛型算法

来源:互联网 发布:淘宝网乒乓球桌多少钱 编辑:程序博客网 时间:2024/06/05 02:08

#include<algorithm>

“泛型”:可操作在多种容器上

1) find()      依赖迭代器和迭代器操作实现,本身不执行容器操作

2) accumulate()    三参数,头两个元素是累加的元素范围,第三个参数是累加的初值

3)  find_first_of()    四参数,在第一段范围内查找与第二段范围中任意元素匹配的元素,返回一个迭代器

4) fill()    三参数,头两个元素是元素范围,第三个参数是值

5) fill_n()   三个参数,一个迭代器/一个计数器/一个值

         不能给在空容器上调用此函数,除非第一个参数为插入迭代器

6) copy()

7) replace()    四参数,两迭代器,初始值及目标值,——替换序列中的值

        replace_copy()                                                             ——创建新的副本

8) sort()    两参数,两迭代器,排序,使用(<)操作符

9) unique()        两参数,两迭代器,删除相邻的重复元素

                               并没有真的删除,而是将无重复元素复制到序列的前端

10)count_if()     三参数,两迭代器,一谓词函数,用于统计满足函数条件的个数

 

三种迭代器

1) 插入迭代器  与容器绑定在一起,实现在容器中插入元素

        back_inserter     front_inserter       inserter(需指定插入起始位置)

2) iostream迭代器  用于迭代遍历所关联的IO流

3) 反向迭代器   实现向后遍历,++运算将访问前一个元素,--运算将访问后一个元素

 

 

迭代器的分类

1) 输入迭代器          读,不能写;只支持自增运算     istream_iterator

2) 输出迭代器          写,不能读;只支持自增运算    ostream_iterator

3) 前向迭代器          读和写;只支持自增运算          需要前向迭代器的泛型算法有replace

4) 双向迭代器          读和写;支持自增和自减运算,泛型算法包括reverse; map、set和list提供双向

5) 随机访问迭代器  读和写;支持完整的迭代器算术运算,string、vector和deque容器定义的迭代器都是随机访问迭代器