C++ Primer 第十章 10.5~10.6 泛型算法结构 练习和总结

本文详细探讨了C++ Primer中的泛型算法结构,包括算法对迭代器的不同要求,如最低需求、多遍扫描与单遍扫描的区别。通过分析练习题,解释了copy、reverse和unique等算法所需的迭代器类型。此外,还介绍了算法的形参模式和命名规范,以及特定容器算法的优化,强调了在适用情况下应优先选择容器内置的高效实现。
摘要由CSDN通过智能技术生成

10.5 泛型算法结构

泛型算法是在迭代器上进行操作的,所以每一个算法都需要迭代器提供它所需的操作,按照可读,可写,递增,递减等迭代器操作,算法对迭代器的操作要求可以分为5个类别。

迭代器名字 支持的操作
输入迭代器 只读、不写、单遍扫描、只能递增
输出迭代器 只写不读、单遍扫描,只能递增
前向迭代器 可读可写;多遍扫描;只能递增
双向迭代器 可读可写;多遍扫描;可递增递减
随机访问迭代器 可读可写;多遍扫描;支持全部迭代器运算

这里的支持全部迭代器运算就是3.4节迭代器所支持的操作里面的所有操作。

每个算法都会迭代器有着**最低的要求,**如果迭代器不满足最低要求则编译报错。高级别的迭代器支持低级别迭代器的所有操作

迭代器类型 必须支持的操作 迭代器举例
输入迭代器 iter1==iter2;iter1!=iter2;++iter;++iter;*iter(只能出现在赋值运算符右侧),iter->member istream_iterator
输出迭代器 iter++;++iter;*iter(只能用于赋值运算符左侧) ostream_iterator
前向迭代器 上述两个的所有操作都要有 forward_list的迭代器
双向迭代器 输入输出迭代器的操作都需要;–iter;iter– 除了forward_list之外的所有标准库容器都必须满足双向迭代器的要求
随机访问迭代器 支持双向迭
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值