The C++ Standard Template Library

Current Version: 1.0a
Summary
The C++ Standard Template Library (STL) is a set of powerful tools which can dramatically increase productivity and software reliability. This course teaches the C++ programmer how to make effective use of the STL, by describing the tools that are available and their abilities, and giving tips and examples on how to incorporate them into programs and projects. Aditionally, students are taught how to design new STL-like tools for situations where existing components are inadequate.

Prerequisites
A sound knowledge of C++ is essential, including familiarity with templates and operator overloading. A reasonably comprehensive C++ course should be a provide sufficient background, providing the student has previous programming experience.

Course Objectives
On completion of this course, the student should be able to
  • Describe the components of the STL
  • Outline the advantages of template-based programming
  • Select appropriate STL tools
  • Effectively use STL containers, iterators and algorithms
  • Design and implement new containers, iterators and algorithms

Intended Audience
This course may prove useful to the people such as:
  • Experienced C++ programmers familiar with older C++ systems without STL
  • Programmers learning C++, who have completed training in the main features of the language

Next Steps
Further knowledge and experience of C++ programming can be gained by studying:
  • Advanced C++ Programming

Length
3 Days

Format
Instructor-led course, with practical computer-based exercises.

Course Outline
  • Introduction
    • What is the STL
    • History of the STL
    • Disadvantages of traditional C/C++
    • How STL solves common C/C++ problems
  • Review
    • Templates
    • Function Templates
    • Class Templates
    • Function Objects
  • Containers Part 1
    • Vector
    • Stack
    • Queue
    • Double ended queue
  • Iterators
    • What are iterators
    • Types of iterators
    • Using iterators
    • Const iterators
    • Random iterators
  • Containers Part 2
    • List
    • Set
    • Map
    • Multimap
  • Algorithms
    • Plug-in algorithms
    • Aggregation algorithms
    • Iterative algorithms
    • Searching algorithms
    • Sorting algorithms
  • Writing STL Add-ons
    • Writing containers
    • Writing iterators
    • Creating plug-in algorithms
  • STL compatibility and availability

Hardware and Software Requirements
Any machine with a C++ compiler that has a robust STL implmentation, such as the GNU g++ compiler or recent Visual C++ versions. Integrated development environment preferable.