<P> It is possible to have bidirectional iterators act like random access iterators, so moving forward ten steps could be done by simply moving forward a step at a time a total of ten times . However, having distinct random access iterators offers efficiency advantages . For example, a vector would have a random access iterator, but a list only a bidirectional iterator . </P> <P> Iterators are the major feature that allow the generality of the STL . For example, an algorithm to reverse a sequence can be implemented using bidirectional iterators, and then the same implementation can be used on lists, vectors and deques . User - created containers only have to provide an iterator that implements one of the five standard iterator interfaces, and all the algorithms provided in the STL can be used on the container . </P> <P> This generality also comes at a price at times . For example, performing a search on an associative container such as a map or set can be much slower using iterators than by calling member functions offered by the container itself . This is because an associative container's methods can take advantage of knowledge of the internal structure, which is opaque to algorithms using iterators . </P> <P> A large number of algorithms to perform activities such as searching and sorting are provided in the STL, each implemented to require a certain level of iterator (and therefore will work on any container that provides an interface by iterators). Searching algorithms like binary_search and lower_bound use binary search and like sorting algorithms require that the type of data must implement comparison operator <or custom comparator function must be specified; such comparison operator or comparator function must guarantee strict weak ordering . Apart from these, algorithms are provided for making heap from a range of elements, generating lexicographically ordered permutations of a range of elements, merge sorted ranges and perform union, intersection, difference of sorted ranges . </P>

Stl is based on which of the following programming paradigm