Iterators are declared using the iterator type defined by the various containers. The STL also supports reverse iterators . Reverse iterators are either bidirectional or random access iterators that move through a sequence in the reverse direction. Thus, if a reverse iterator points to the end of a sequence, incrementing that iterator will cause it to point one element before the end. Each container has defined for it an allocator .
Allocators manage memory allocation for a container.
The default allocator is an object of class allocator , but you can define your own allocators if needed by specialized applications. For most uses, the default allocator is sufficient. Function objects can be used in place of function pointers in the STL algorithms described later. Using function objects rather than function pointers allows the STL to generate more efficient and more flexible code. In the most general sense, an adaptor transforms one thing into another.