The
other half of the STL is the algorithms, which are templatized functions
designed to work with the containers (or, as you will see, anything that can
behave like a container, including arrays
and
string
objects).
The
STL was originally designed around the algorithms. The goal was that you use
algorithms for almost every piece of code that you write. In this sense it was
a bit of an experiment, and only time will tell how well it works. The real
test will be in how easy or difficult it is for the average programmer to
adapt. At the end of this chapter you’ll be able to decide for yourself
whether you find the algorithms addictive or too confusing to remember. If
you’re like me, you’ll resist them at first but then tend to use
them more and more.
Before
you make your judgement, however, there’s one other thing to consider.
The STL algorithms provide a
vocabulary
with which to describe solutions. That is, once you become familiar with the
algorithms you’ll have a new set of words with which to discuss what
you’re doing, and these words are at a higher level than what
you’ve had before. You don’t have to say “this loop moves
through and assigns from here to there ... oh, I see, it’s
copying!” Instead, you say
copy( ).
This is the kind of thing we’ve been doing in computer programming from
the beginning – creating more dense ways to express
what
we’re doing and spending less time saying
how
we’re doing it. Whether the STL algorithms and
generic
programming
are
a great success in accomplishing this remains to be seen, but that is certainly
the objective.