【泛型算法】

本文详细介绍了C++中的泛型算法,包括只读算法如find、count和accumulate,以及涉及写入和重排元素的算法如fill、fill_n、copy、sort、unique和erase。特别强调了迭代器在算法中的作用和使用注意事项。
摘要由CSDN通过智能技术生成

泛型算法

特点:

  1. 这些算法并不直接操作容器,而是遍历由两个迭代器指定的一个元素范围。
  2. 迭代器令算法不依赖于容器,但算法依赖于元素类型的操作。

泛型算法汇总

只读算法

  1. find:三个参数,前两个指定元素范围,第三个参数指定待查找值。作用:查找固定值
  2. count:三个参数,前两个指定元素范围,第三个参数指定待计数值。作用:对固定值计数
  3. accumulate:三个参数,前两个指定元素范围,第三个参数表示和的初值。作用:指定范围“累加”。注:序列中元素的类型必须与第三个参数匹配,或者能够转换未第三个参数的类型。例如:string sum = accumulate(v.cbegin(),v.cend(),“”);最后的空字符串为const char*,而它并没有+运算符,报错。
  4. equal:三个参数,前两个参数表示第一序列的范围,第三个参数表示第二个序列的首元素。作用:判断两序列中每个元素是否相等。注:1.底层使用**==来判断,容器及元素类型都可以不同**。2.假定序列2至少与序列1等长,否则取出1中元素,2没有与之对应的元素。

注意

  • 对于只读取而不改变元素的算法应该最好使用cbegin和cend获取迭代器。
  • 只接受一个单一迭代器来表示第二个序列的算法,都假定第二个序列至少与第一个等长。

写容器元素的算法

  1. fill:三个参数,前两个参数表示序列范围,第三个表示值。作用:填充指定范围的元素。
  2. fill_n:三个参数,第一个表示起始迭代器,第二个表示个数,第三个表示值。作用:填充指定个数的元素。
  3. copy:三个参数,前两个表示序列范围,第三个表示待粘贴序列。作用:拷贝一个容器到另一个容器。注:copy返回的是目的位置的迭代器递增后的值。
  4. back_iterator:一个参数,第一个表示插入迭代器操作的容器。作用:返回一个与该容器绑定的插入迭代器。

重排容器元素的算法

  1. sort:两个参数,前两个参数表示序列范围。作用:对序列进行排序
  2. unique:两个参数,前两个参数表示序列范围。作用:返回指向不重复范围末尾的迭代器
  3. erase:两个参数,前两个参数表示序列范围。作用:删除指定序列的元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值