The workhorse: std::vector<T>
std::vector
represents a contiguous array of data elements, but allocated on the heap instead of on the stack. This improves on std::array
in two ways: First, it allows us to create a really gigantic array without blowing our stack. Second, it allows us to resize the underlying array dynamically--unlike std::array<int, 3>
where the size of the array is an immutable part of the type, a std::vector<int>
has no intrinsic size. A vector's .size()
method actually yields useful information about the current state of the vector.
A std::vector
has one other salient attribute: its capacity. The capacity of a vector is always at least as large as its size, and represents the number of elements that the vector currently could hold, before it would need to reallocate its underlying array:

Other than its resizeability, vector
behaves similarly to array
. Like arrays, vectors are copyable (copying all their data elements, in linear time) and comparable (std...