Loading

【OI笔记】$\mathtt{Iterator}$

OI wiki:

在 STL 的定义中,迭代器根据其支持的操作依次分为以下几类:

  • \(InputIterator\)(输入迭代器):只要求支持拷贝、自增和解引访问。

  • \(OutputIterator\)(输出迭代器):只要求支持拷贝、自增和解引赋值。

  • \(ForwardIterator\)(向前迭代器):同时满足 \(InputIterator\)\(OutputIterator\) 的要求。

  • \(BidirectionalIterator\)(双向迭代器):在 \(ForwardIterator\) 的基础上支持自减(即反向访问)。

  • \(RandomAccessIterator\)(随机访问迭代器):在 BidirectionalIterator 的基础上支持加减运算和比较运算(即随机访问)。

感觉这分类鸟用没有啊,时间复杂度、空间复杂度等等莫得区别/kb

\(Iterator\) 作为 \(STL function\) 的参数:

  • 使用 next(iter) 获取 \(ForwardIterator\) iter的后继。

  • 使用 prev(iter) 获取 \(BidirectionalIterator\) iter 的前驱。

但是我认为叭,既然 \(STL\) 定义中这几个迭代器的分类没有互斥,所以我觉得向前迭代器、双向迭代器、随机访问迭代器都可以使用prev()函数求前驱。同理,双向迭代器、随机访问迭代器都可以使用next()函数求后继。

\(Iterator\) 的声明:

std::containerName<typeName,...>::iterator name;

updating&studying

posted @ 2020-10-22 19:13    阅读(139)  评论(0编辑  收藏  举报