=====C++ Standard Template Library===== The C++ STL (Standard Template Library) is a generic collection of class templates and algorithms that allow programmers to easily implement standard data structures like queues, lists and stacks. ====STL Containers==== The C++ STL provides two kinds of containers: * Sequence Containers * [[stl/vector/|C++ Vectors]] * [[stl/list/|C++ Lists]] * [[stl/deque/|C++ Double-Ended Queues]] * Associative Containers * [[stl/map/|C++ Maps]] * [[stl/multimap/|C++ Multimaps]] * [[stl/set/|C++ Sets]] * [[stl/multiset/|C++ Multisets]] \\ In addition, the C++ standard library provides several non-STL containers.\\ They can be considered containers, but don't meet all the requirements of STL containers. * Container Adapters * [[stl/stack/|C++ Stacks]] * [[stl/queue/|C++ Queues]] * [[stl/priority_queue/|C++ Priority Queues]] * Others * [[stl/bitset/|C++ Bitsets]] * [[valarray/|C++ Valarrays]] \\ The idea behind the C++ STL is that the hard part of using complex data structures has already been completed. If a programmer would like to use a stack of integers, all one has to do is use this code: stack myStack; With minimal effort, one can now [[stl/stack/push]] and [[stl/stack/pop]] integers onto this stack. Through the magic of C++ Templates, one could specify any data type, not just integers. The STL Stack class will provide generic functionality of a stack, regardless of the data in the stack. ====Algorithms==== In addition, the STL also provides a bunch of useful [[stl/algorithm/|algorithms]] -- such as [[stl/algorithm/binary_search]], [[stl/algorithm/sort]], and [[stl/algorithm/for_each]] -- that can be used on a variety of containers or data structures. ====Iterators==== [[stl/iterators]] provide a generic way of iterating over the STL containers or other data structures. ====Function Objects==== The [[stl/functional/| header file]] defines function objects and function adapters. ====Memory==== The [[stl/memory/| header file]] provides simple memory management structures like [[stl/memory/auto_ptr]]. ====Utility==== There are several generic utility methods like [[stl/utility/make_pair]] in the [[stl/utility/| header file]].