Other Containers
The array, vector, list and map containers discussed here are pretty close to being all you need. But the C++ library provides many others, which may provide greater convenience or efficiency for certain applications. Here is a list. Briefly:
dequeThe slightly famous double-ended queue. Can pretty much do the same things with a list, but this might be more efficient.
forward_listA singly-linked list. Allows only forward scanning, but saves some space compared to list, if that's all you need.
setA set of objects.
multisetSimilar to a set, but allows an object to be present multiple times. This type of data structure is sometimes called a bag.
multimapA map which allows keys to have multiple values.
unordered_map
unordered_multimap
unordered_set
unordered_multiset
The regular map and set containers are implemented using red-black trees (a kind of balanced BST). These versions provide similar facilities implemented using hashing. Both methods are efficient, but one or the other may be better for particular applications.

One interesting bit of trivia: Java often names its collections after their implementation methods (e.g., TreeMap), while C++ container names just describe their abstraction. Originally, C++ contained only one implementation for each abstraction, and they had the short names. The longer-named alternatives, such as unordered_map, were added later to provide more choice for programmers.