Course Duration: 3 days

Course Overview: 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

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.


·   Use any of the data structures contained in STL
·   Use any of the algorithms contained in STL
·   Connect algorithms to containers using STL iterators
·   Demonstrate the principles of generic programming
·   Apply STL algorithms to the standard C and C++ data types
Prerequisites: Students should have a working knowledge of C++.


Module 1. Fundamentals of STL               Examples from STL
                                            · Example: vectors, lists
An Overview of Templates                    · Example: maps
· Templates                                 · Example: sets
· Overloading functions                     · Example: multiset
· Template functions                        · Example: find with a vector
· Specializing a template function          · Example: find with a list
· Disambiguation under specialization       · Example: merge
· Template classes                          · Iterators
· An array template class                   · Function objects
· Instantiating a template class object     · Adaptors
· Rules for templates                       STL Containers
· Non member function with a                · Vector
   template argument                        · Deque
· Friends of template classes               · List
· Templates with multiple type              · The beauty of STL
   parameters                               · Associative Containers
· Non type parameters for template          · Set
   classes                                  · Multiset
· Comments regarding templates              · Map
Overview of the Standard Template           · Multimap
Library                                     STL Iterators
· Perspective                               · Input iterators
· History and evolution                     · Output iterators
· New features in C++                       · Forward iterators
· The Standard Template Library             · Backward iterators
· Design goals
· Header files
                                            Module 2. Intermediate STL
· STL components
· Containers
· Algorithms                                Function Objects
· Iterators                                 · Function objects vs. function
                                            · Predicate function objects
                                            · Comparison function objects
                                            · Numeric function objects
                                            · Programmer supplied function
                                            · Built-in function objects
STL Algorithms
· Non-Mutating sequence algorithms
· Mutating sequence algorithms
· Sorting and searching algorithms
· Numeric algorithms
· General
Container Adaptors
· Wrapper classes
· Stack container adaptors
· Queue container adaptors
· Priority_Queue container adaptors
· Rationale
· Default Allocator
· Custom Allocators
· Container Storage Allocation

To top