Containers are based upon manipulating values rather than references (pointers) unless of course the values that are being manipulated are pointers. Containers copy or move elements in some ordered manner with the use of iterators by utilizing defined methods or operations. All container classes provide a constructor, a destructor, and a copy constructor. For instance, the vector class has use of the push_back method as well as the move method for copying data into the vector.
See Table 7.1 on page 255, The C++ Standard Library, second ed. (Josuttis).
Models a static C-style array in the container class array<>. Fundamentally, it wraps the array class in a STL template. It is a sequence of elements that has a set size which is unchangeable – only the replacement of element value can be done.
A vector is a dynamic array – it has the ability to expand and contract but all elements must be homogenous.
A deque is a dynamic array and have many of the same properties as a vector except that both ends of the deque is open. Means Double Ended Queue. Vectors use a single array that needs to be occasionally reallocated for growth, the elements of a deque can be scattered in different chunks of storage, with the container keeping the necessary information internally to provide direct access to any of its elements in constant time and with a uniform sequential interface.
Doubly linked list implementation. While the deque, vector, and array are based, fundamentally, on the same type of internal structure, the list is fairly different. There are two anchors which are pointers to the head and tail of the list, and each element points to the next and previous elements.
Set containers automatically sort their elements automatically. Multisets allow duplication of elements whereas sets do not. Usually, the sort implementation is a binary tree which implies that elements cannot be changed directly. Thus, an element has to be deleted, modified, and then re-inserted.
Where sets sort elements based upon the association of the value of the element itself, maps and multimaps sort elements based upon some key in the element associated with the value of the element. Multimaps allow duplicate key/value pairs where as maps do not.