C++ 面试题 目录

C++ 中迭代器 (iterator) 的种类有哪些?

推荐答案

在C++中,迭代器(iterator)主要分为以下几种类型:

  1. 输入迭代器(Input Iterator)
  2. 输出迭代器(Output Iterator)
  3. 前向迭代器(Forward Iterator)
  4. 双向迭代器(Bidirectional Iterator)
  5. 随机访问迭代器(Random Access Iterator)

本题详细解读

1. 输入迭代器(Input Iterator)

输入迭代器用于从容器中读取数据。它支持以下操作:

  • 解引用操作(*)来访问元素。
  • 递增操作(++)来移动到下一个元素。
  • 比较操作(==!=)来判断迭代器是否相等。

输入迭代器只能单向遍历容器,并且只能读取元素,不能修改元素。

2. 输出迭代器(Output Iterator)

输出迭代器用于向容器中写入数据。它支持以下操作:

  • 解引用操作(*)来修改元素。
  • 递增操作(++)来移动到下一个元素。

输出迭代器只能单向遍历容器,并且只能写入元素,不能读取元素。

3. 前向迭代器(Forward Iterator)

前向迭代器结合了输入迭代器和输出迭代器的功能,既可以读取元素,也可以修改元素。它支持以下操作:

  • 解引用操作(*)来访问或修改元素。
  • 递增操作(++)来移动到下一个元素。
  • 比较操作(==!=)来判断迭代器是否相等。

前向迭代器可以单向遍历容器,并且可以多次遍历同一个容器。

4. 双向迭代器(Bidirectional Iterator)

双向迭代器在前向迭代器的基础上增加了向后移动的能力。它支持以下操作:

  • 解引用操作(*)来访问或修改元素。
  • 递增操作(++)来移动到下一个元素。
  • 递减操作(--)来移动到上一个元素。
  • 比较操作(==!=)来判断迭代器是否相等。

双向迭代器可以双向遍历容器,适用于需要前后移动的场景。

5. 随机访问迭代器(Random Access Iterator)

随机访问迭代器是功能最强大的迭代器类型,支持随机访问容器中的元素。它支持以下操作:

  • 解引用操作(*)来访问或修改元素。
  • 递增操作(++)来移动到下一个元素。
  • 递减操作(--)来移动到上一个元素。
  • 比较操作(==!=<><=>=)来判断迭代器的位置关系。
  • 算术操作(+-+=-=)来快速移动到任意位置。
  • 下标操作([])来直接访问元素。

随机访问迭代器适用于需要快速随机访问元素的场景,如数组或向量的迭代器。

纠错
反馈