Generic algorithmic abstractions are families of data abstractions with a
common set of algorithms. In order to make algorithms generic they are
designed to work on iterators (see below) that are exported by
containers. For instance, a
sort algorithm could work on a linked list or a vector data
abstraction if the list and vector collection classes provide iterator
objects that mark the beginning and end of the container. Algorithms
are implemented as template functions in STL,
typically parameterized over iterators or structural abstractions.