迭代器的设计原则

声明:本文中所有图件都来自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. 迭代器萃取器