Iterator traits

As mentioned, STL differentiates iterators by which categories they fulfill. This is achieved by defining the following five specific types in the iterator class:

  • iterator_category, the category the iterator fulfills
  • difference_type, the type used to store the distance between two iterators
  • value_type, the value the iterator returns when dereferenced
  • reference, the type used for referencing the value_type
  • pointer, the type of pointer used for pointing to the value_type

For the IntIterator, the following types would be defined:

class IntIterator {public:  ...  using difference_type = int;  using value_type = int;  using reference = int&;  using pointer = int*;  using iterator_category = std::forward_iterator_tag;  ...}

It might ...

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.