泛型算法
特点:
- 这些算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围。
- 迭代器令算法不依赖于容器,但算法依赖于元素类型的操作。
泛型算法汇总
只读算法
- find:三个参数,前两个指定元素范围,第三个参数指定待查找值。作用:查找固定值
- count:三个参数,前两个指定元素范围,第三个参数指定待计数值。作用:对固定值计数
- accumulate:三个参数,前两个指定元素范围,第三个参数表示和的初值。作用:指定范围“累加”。注:序列中元素的类型必须与第三个参数匹配,或者能够转换未第三个参数的类型。例如:string sum = accumulate(v.cbegin(),v.cend(),“”);最后的空字符串为const char*,而它并没有+运算符,报错。
- equal:三个参数,前两个参数表示第一序列的范围,第三个参数表示第二个序列的首元素。作用:判断两序列中每个元素是否相等。注:1.底层使用**==来判断,容器及元素类型都可以不同**。2.假定序列2至少与序列1等长,否则取出1中元素,2没有与之对应的元素。
注意:
- 对于只读取而不改变元素的算法应该最好使用cbegin和cend获取迭代器。
- 只接受一个单一迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个等长。
写容器元素的算法
- fill:三个参数,前两个参数表示序列范围,第三个表示值。作用:填充指定范围的元素。
- fill_n:三个参数,第一个表示起始迭代器,第二个表示个数,第三个表示值。作用:填充指定个数的元素。
- copy:三个参数,前两个表示序列范围,第三个表示待粘贴序列。作用:拷贝一个容器到另一个容器。注:copy返回的是目的位置的迭代器递增后的值。
- back_iterator:一个参数,第一个表示插入迭代器操作的容器。作用:返回一个与该容器绑定的插入迭代器。
重排容器元素的算法
- sort:两个参数,前两个参数表示序列范围。作用:对序列进行排序
- unique:两个参数,前两个参数表示序列范围。作用:返回指向不重复范围末尾的迭代器
- erase:两个参数,前两个参数表示序列范围。作用:删除指定序列的元素