Definition
C++’s standard template library(STL)
☜• Containers, iterators, algorithms (sort, find, etc.), numerics
A container is an object that stores (in memory) a collection of other objects (elements)
- implemented as class templates, so hugely flexible
- Read more info in C++ Primer 9.2 and 11.2

Cons for Containers:
- STL containers store by value, not by reference
- When you insert an object, the container makes a copy
- If the container needs to rearrange objects, it makes copies
- e.g. if you sort a vector, it will make many, many copies
- e.g. if you insert into a map, that may trigger every copies
- You can insert a wrapper object with a pointer to the object
STL iterator
Each container class has an associated iterator class used to iterate through elements of the containers
- Iterator range is from begin up to end
- end is one past the last container element

auto keyword is also very useful in this case:

STL list
- A generic doubly-linked list
- Elements are not stored in contiguous memory locations
- does not support random access (like list[5])
- Some operations are much more efficient than vectors
- Constant time insertion, deletion anywhere in list
- can iterate forward or backwards
- Has a built-in sort member function
- doesn’t copy! manipulates list structure instead of element values