The C++ Standard Template Library is a large part of the C++ Standard Library. STL consists of three major components: data structures, algorithms and iterators. Every data structure you are likely to want is available, including familiar containers such as array, list, deque, stack, queue, set and others. Also available are a plethora of algorithms, such as sort(), search(), merge(), find() and others. The third major component of STL, iterators, link the algorithms to the data structures. Iterators are a generalization of pointers, and are designed for efficient traversal through the data structures.
The course consists of two modules. The first module, Fundamentals of STL, begins with an overview of C++ templates. If your students are already familiar with templates, this chapter can be covered briefly as a review. Otherwise, it should be covered thoroughly, including the exercises at the end of the chapter. The second chapter gives an overview of STL, including its history and evolution. It also surveys the major features of STL. There is no lab for this chapter, which is intended to provide an orientation to the whole subject, not the details. Chapter 3 contains a large number of simple examples illustrating the main features of STL. It could be called a tour of STL. At this point students should already have a reasonable working knowledge of the subject. The rest of the course elaborates on the individual features. Chapter 4 covers STL containers, and Chapter 5 covers STL iterators.
The second module, Intermediate STL, covers the remaining features of STL. Chapter 1 introduces function objects, which are objects of any class that overloads the function call operator, operator(). Most STL algorithms accept a function object as a parameter, allowing the programmer to vary the way an algorithm works. Chapter 2 covers STL algorithms. The third chapter discusses container adaptors, which are STL components that can be used to change the interface of another component. They support the creation of STL classes such as stack and queue from lower-level components such as vector and list. The course concludes with an introduction to allocators, which are used by STL to encapsulates memory model information.






