【发布时间】:2011-07-09 20:59:29
【问题描述】:
C++ STL 中有多少种迭代器?到目前为止,我知道这些:
- 输出迭代器
- 输入迭代器
- 前向迭代器
- 随机访问迭代器
还有更多吗?它们之间有什么区别?各自的局限和特点是什么?什么时候用什么类型?
【问题讨论】:
C++ STL 中有多少种迭代器?到目前为止,我知道这些:
还有更多吗?它们之间有什么区别?各自的局限和特点是什么?什么时候用什么类型?
【问题讨论】:
如果可以,请查找并阅读“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
【讨论】:
forward_list,unordered_set, unordered_multiset、unordered_map 和 unordered_multimap。
contiguous_iterator_tag。
C++ 标准也有一个双向迭代器的概念,它是一个向前迭代器,也可以向后(operator--)。这五个共同构成了 C++ 标准第 24.2 段中的整个迭代器层次结构。
旧的 STL 也有 Trivial Iterator 的概念。有关各种迭代器的详细信息,请参阅其Iterator overview。
Boost 设计师 Abrahams、Siek 和 Witt 拥有 presented 一组更细粒度的迭代器概念。
【讨论】:
我怀疑你很清楚答案,但无论如何,these charts 对解决这个问题很有帮助
【讨论】: