=====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]].