# Iterators

## Classes

- struct std::bidirectional_iterator_tag
    Bidirectional iterators support a superset of forward iterator operations. More...
- struct std::forward_iterator_tag
    Forward iterators support a superset of input iterator operations. More...
- struct std::input_iterator_tag
    Marking input iterators. More...
- struct std::iterator< _Category, _Tp, _Distance, _Pointer, _Reference >
    Common iterator class. More...
- struct std::iterator_traits< _Iterator >
- struct std::output_iterator_tag
    Marking output iterators. More...
- struct std::random_access_iterator_tag
    Random-access iterators support a superset of bidirectional iterator operations. More...

## Functions

- template<typename _Iter > iterator_traits< _Iter >
  ::iterator_category std::__iterator_category (const _Iter &)

## Detailed Description

These are empty types, used to distinguish different iterators. The distinction is not made by what they contain, but simply by what they are. Different underlying algorithms can then be used based on the different operations supported by different iterator types.

## Function Documentation

template<typename _Iter >

iterator_traits<_Iter>::iterator_category std::__iterator_category | ( | const _Iter & |  | ) | `[inline]`

This function is not a part of the C++ standard but is syntactic sugar for internal library use only.

Definition at line 160 of file stl_iterator_base_types.h.

Referenced by std::advance(), std::copy_n(), __gnu_cxx::copy_n(), std::distance(), __gnu_cxx::distance(), std::find(), std::find_end(), std::find_if(), std::find_if_not(), std::partition(), std::reverse(), std::search_n(), std::uninitialized_copy_n(), __gnu_cxx::uninitialized_copy_n(), and std::unique_copy().