Container
classes
are
the solution to a specific kind of code reuse problem. They are building blocks
used to create object-oriented programs – they make the internals of a
program much easier to construct.
A
container class describes an object that holds other objects. Container classes
are so important that they were considered fundamental to early object-oriented
languages. In Smalltalk, for example, programmers think of the language as the
program translator together with the class library, and a critical part of that
library is the container classes. So it became natural that C++ compiler
vendors also include a container class library. You’ll note that the
vector
was so useful that it was introduced in its simplest form very early in this
book.
Like
many other early C++ libraries, early container class libraries followed
Smalltalk’s
object-based
hierarchy
,
which worked well for Smalltalk, but turned out to be awkward and difficult to
use in C++. Another approach was required.
This
chapter attempts to slowly work you into the concepts of the C++
Standard
Template Library
(STL),
which is a powerful library of containers (as well as
algorithms,
but these are covered in the following chapter). In the past, I have taught
that there is a relatively small subset of elements and ideas that you need to
understand in order to get much of the usefulness from the STL. Although this
can be true it turns out that understanding the STL more deeply is important to
gain the full power of the library. This chapter and the next probe into the
STL containers and algorithms.