Iterator Type Transformations
Iterator transformation depends on the container class, i.e., according to the Standard, some containers support only forward iterators while some support random or bidirectional iterators. Adaptor classes are built on top of other containers, so they have no iterators.
Random and bidirectional iterators include type transformations for the
iterator,
const_iterator,
reverse_iterator, and
const_reverse_iterator types for the container class.
Forward iterators include type transformations for the
iterator and
const_iterator types for the container class.
Local iterators apply to the unordered containers only and include type transformations for the
local_iterator and
const_local_iterator types for the container class.
All iterators transform to a structure containing a member named
$elide_ptr that is a pointer to the value type, and points to an element in the container. (See
Struct TTF “$elide_” Members.)
Local iterator transformed types also contain
bucket and
bucket_count members, corresponding to element's bucket number and the number of buckets in the hashtable.
The adaptor classes act as a wrapper to an underlying container class (deque, list, or vector), which is transformed according to the normal TTF rules.