简体   繁体   中英

Types of iterator : Output vs. Input vs. Forward vs. Random Access Iterator

How many types of iterators are there in C++ STL? As of now, I know of these:

  • Output Iterator
  • Input Iterator
  • Forward Iterator
  • Random Access Iterator

Are there more? What are the differences between them? What are the limitations and characteristics of each? Which type is used when?

If you can, find and read "The C++ Standard Library: A Tutorial and Reference". This book contains a whole chapter about STL iterators.

Here is a little something from the book:

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 

The C++ standard also has a Bidirectional Iterator concept, which is a Forward Iterator that can also go backward (with operator-- ). Together, these five form the entire iterator hierarchy in paragraph 24.2 of the C++ standard.

The old STL also had the concept of a Trivial Iterator . See its Iterator overview for details regarding the various iterators.

Boost designers Abrahams, Siek and Witt have presented a much more fine-grained set of iterator concepts.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM