The vector container class generalizes the concept of an ordinary C array. Like an array, a vector is an indexed data structure, with index values that range from 0 to one less than the number of elements contained in the structure. Also like an array, values are most commonly assigned to and extracted from the vector using the subscript operator. However, the vector differs from an array in the following important respects:
A vector has more self-knowledge than an ordinary array. In particular, a vector can be queried about its size, about the number of elements it can potentially hold, which can differ from its current size, and so on.
The size of the vector can change dynamically. New elements can be inserted on to the end of a vector, or into the middle. Storage management is handled efficiently and automatically. It is important to note, however, that while these abilities are provided, insertion into the middle of a vector is not as efficient as insertion into the middle of a list (Section 6). If many insertion operations are to be performed, the list container should be used instead of the vector datatype.
The vector container class in the Standard C++ Library should be compared and contrasted to the deque container class described in Chapter 7. Like a vector, a deque (pronounced deck) is an indexed data structure. The major difference between the two is that a deque provides efficient insertion at either the beginning or the end of the container, while a vector provides efficient insertion only at the end. In many situations, either structure can be used. Use of a vector generally results in a smaller executable file, while use of a deque may result in a slightly faster program, depending upon the particular set of operations being performed.
Whenever you use a vector, you must include the vector header file:
# include <vector>