泛型算法 - 初步总结

C++ 标准化过程做出的更重要的贡献之一是:创建和扩展了标准库。
容器和算法库是标准库的基础。标准库定义了超过一百个算法。
幸运的是,这些算法具有相同的结构,使它们更易于学习和使用。

算法与类型无关:
它们通常在一个元素序列上操作,这些元素可以存储在标准库容器类型、内置数组甚至是生成的序列(例如读写流所生成的序列)上。

算法基于迭代器操作,从而实现类型无关性。大多数算法使用一对指定元素范围的迭代器作为其头两个实参。
其他的迭代器实参包括指定输出目标的输出迭代器,或者用于指定第二个输入序列的另一个或一对迭代器。

迭代器可通过其所支持的操作来分类。标准库定义了五种迭代器类别:
输入、输出、前向、双向和随机访问迭代器。
如果一个迭代器支持某种迭代器类别要求的运算,则该迭代器属于这个迭代器类别。

正如迭代器根据操作来分类一样,算法的迭代器形参也通过其所要求的迭代器操作来分类。
第一种模式只需要读取其序列的算法通常只要求输入迭代器的操作。
而写目标迭代器的算法则通常只要求输出迭代器的操作,依此类推。

第二种模式查找某个值的算法通常提供第二个版本,用于查找使谓词函数返回非零值的元素。
对于这种算法,第二个版本的函数名字以 _if 后缀标识。
类似地,很多算法提供所谓的复制版本,将(修改过的)元素写到输出序列,而不是写回输入范围。
这种版本的名字以 _copy 结束。

第三种模式是考虑算法是是否对元素读、写或者重新排序。算法从不直接改变它所操纵的序列的大小。
(如果算法的实参是插入迭代器,则该迭代器会添加新元素,但算法并不直接这么做。)
算法可以从一个位置将元素复制到另一个位置,但不直接添加或删除元素。

 

转载于:https://www.cnblogs.com/yshl-dragon/p/3185790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值