Throughout this whole chapter, I've actually been lying to you! Each of the containers described in this chapter--except for std::array--takes one more optional template type parameter. This parameter is called the allocator, and it indicates where the memory comes from for operations such as "reallocating the underlying array" or "allocating a new node on the linked list." std::array doesn't need an allocator because it holds all of its memory inside itself; but every other container type needs to know where to get its allocations from.
The default value for this template parameter is the standard library type std::allocator<T>, which is certainly good enough for most users. We'll talk more about allocators in Chapter 8, Allocators.