Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Jul 19, 2000

Understanding Iterator Categories

The Standard Template Library defines five major categories of iterators. The following diagram illustrates these categories: input iterators output iterators \ / forward iterators | bidirectional iterators | random access iterators Note that this illustration doesn't represent inheritance relationships; it merely describes the iterator categories and their interfaces. Each lower category is a superset of the category above it. For instance, a forward iterator provides the functionality of input and output iterators plus additional functionality. Here is a brief summary of the functionality and interfaces of these categories:

  • Input iterators allow the user to advance the iterator (by using the ++) and read the value to which the iterator points (using the * operator).
  • Output iterators allow the user to advance the iterator and assign a new value to the object to which the iterator is pointing.
  • Forward iterators support both read and write access, but traversal is permitted only in one direction.
  • Bidirectional iterators allow the user to traverse the sequence in both directions. In other words, you can use both ++ and—with a bidirectional iterator.
  • Random access iterators support random jumps and pointer arithmetic operations. For example:

     
    string::iterator it = s.begin();
    char c = *(it+5); // skip five elements in a sequence
    
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap