迭代器的类型:输出与输入与前向与随机访问迭代器

时间:2011-03-06 16:58:11

标签: c++ stl iterator

C ++ STL中有多少种类型的迭代器?截至目前,我知道这些:

  • 输出迭代器
  • 输入迭代器
  • Forward Iterator
  • 随机访问迭代器

还有更多吗?它们之间有什么区别?每个的限制和特征是什么?什么时候使用哪种类型?

3 个答案:

答案 0 :(得分:38)

如果可以,请查找并阅读“The C ++标准库:教程和参考”。本书包含有关STL迭代器的整章。

这是书中的一些内容:

Iterator Category  Ability                          Providers
-----------------  -------------------------------  ----------------------------
Input iterator     Reads forward                    istream
Output iterator    Writes forward                   ostream, inserter
Forward iterator   Reads/writes forward             forward_list,
                                                      unordered_[multi]set,
                                                      unordered_[multi]map
Bidirectional it.  Reads/writes forward/backward    list, [multi]set, [multi]map
Random access it.  Reads/writes with random access  vector, deque string, array 

答案 1 :(得分:15)

C ++标准还有一个双向迭代器概念,它是一个前向迭代器,也可以向后(使用operator--)。这五个一起构成了C ++标准第24.2节中的整个迭代器层次结构。

旧的STL也有Trivial Iterator的概念。有关各种迭代器的详细信息,请参阅其Iterator overview

提升设计师Abrahams,Siek和Witt有presented一组更精细的迭代器概念。

答案 2 :(得分:6)

我怀疑你很清楚答案,但无论如何,these charts对于解决这个问题非常有帮助