迭代器的设计原则

声明:本文中所有图件都来自B站侯捷老师授课视频

  • 迭代器 iterator 需要遵循的原则
    在这里插入图片描述
    图1. iterator 需遵循的原则
    在这里插入图片描述
    图2. iterator 必须提供的5种associated types

  • 迭代器是算法与容器的桥梁,算法在对容器进行操作时,先要提出一些问题,得到回答之后才能完成任务,由迭代器来回答这些问题。

  • 算法提出问题:1. 迭代器类型, 2. differenc_type,两个迭代器之间的距离 ;3.容器元素类型;(4. reference,5. pointer 这两点没有被问过)。

  • 以上所述迭代器都是 class, 但是有时 所用迭代器是指针,指针可以说是退化的迭代器。这时要用到萃取器 Iterator Traits, 它有能力分辨所获取的 iterator 是 (1)class iterator T 或者是 (2)native pointer to T 。这里是利用 patial specialization (模板特化,特化成指针)达到目的,如下图。
    在这里插入图片描述
    图3. 迭代器萃取器

  • 迭代器的类型:
    (1)输入迭代器input iterator
    (2)输出迭代器output iterator
    (3)前向迭代器forward iterator
    (4)双向迭代器bidirectional iterator
    (5)随机访问迭代器random-access iterator
    继承关系:
    在这里插入图片描述
    可以参考:https://zh.cppreference.com/w/cpp/iterator

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值