C ++ STL中有多少种类型的迭代器?截至目前,我知道这些:
还有更多吗?它们之间有什么区别?每个的限制和特征是什么?什么时候使用哪种类型?
答案 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对于解决这个问题非常有帮助