Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA AFTER EIGHT
    MODULE SYSTEM
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
Effective STL Programming

Effective STL Programming COURSE DESCRIPTION  

The STL (Standard Template Library)  is a comprehensive set of class and function templates for various collections and numerous algorithms and is part of the ISO/ANSI standard C++ library. It has an unusual and elegant architecture in that it separates data structures from algorithms - a programming paradigm known as generic programming

This course does not only provide in-depth knowledge of the STL itself, but also explains new C++ language features and novel programming techniques that are used in the STL. You will learn how to effectively use collections and algorithms from the STL, how you can extend the STL framework, and you will also enhance your understanding of templates.

If you are a programmer with at least one year of hands-on experience using C++, you are ready for exploring another C++ programming paradigm - generic programming.

If you want to stay ahead of your time and keep your knowledge above average you need to know everything about the latest progamming techniques in C++, then this is the right course for you.
 
 

The course is designed and conducted by Angelika Langer and backed by years of experience in teaching  C++ related topics and more than a decade of real-world experience in industrial software development. Angelika Langer is a freelance trainer/consultant in the area of object-oriented software development in C++ and Java. She is member of the ANSI C++ standards committee since 1993, columnist of C++ Report, and a recognized speaker at OO conferences. 


 

 

 
Prerequisite Courses and Skills: Introductory C++ course, or equivalent experience, plus base knowledge of templates 

One year of programming experience using C++

Duration: 4 days

The course can be broken down into two 2-day seminars:

  • an introductory seminar on using the predefined STL abstractions
  • an advanced seminar on extending the STL framework
  • Exercises: Workshops and hands-on labs 

     
    Attendants should feel comfortable with the basics of the language and be open for expanding their knowledge beyond object oriented C++. We will explore new template features along with the generic programming paradigm. The goal is not only to learn how to use the predefined components of the STL, but also understanding the underlying concepts and how to extend the STL framework. 

     

    PERFORMANCE OBJECTIVES
    Understand generic programming
    Get the most out of the STL
    Effectively use STL containers and algorithms
    Understand the design of STL iterators
    Understand function object types

    BUSINESS OBJECTIVES
    Equip your software professional state-of-the-art C++ skills 
    Make reuse happen
    Increase the efficiency of your C++ programs
    Build on reliable standard components
     

    COURSE OVERVIEW

    DAY 1
    A Tour of STL

    Iterators

    • Iterator concepts
    • Iterator adaptors
    • Stream iterators
    Sequential Containers
    • Vector
    • Sorting and searching
    • Deque
    • Insertion into vector/deque
    • List
    Functors
      • Function objects vs. function pointers
      • Predefined predicates and comparitors
      • Erase-element predicate
    DAY 2
    Sequential Containers in Action
    • The pair abstraction
    • Merging directories
    • Directory lookup and update
    Associative containers
    • Map
    • Multimap
    • Set and multiset
    • Directory update using set and map
    Comparators In-Depth
    • Algorithms, containers, and comparators
    • Strict weak ordering
    • User-defined comparators
    • Merging containers with different sorting order

    DAY 3
    Algorithms and Functors
      • Functor Requirements
      • Functor Concepts
      • Functors and Algorithms


      Functor Adapters
       

      • Binders and Negators


      Containers In-Depth

      • Container adapters: stack & queue
      • Containter concepts
      • Complexity guarantees
      • Immutable set iterators
      • User-defined containers
    DAY 4
    Iterator In-Depth
      • Iterator traits
      • User-defined iterators
      • "Safe" iterator adapter
      • Stream and insert iterators


      Allocators
       

      • The standard allocator
      • User-defined allocators


      Exception safety
       

      • The problem
      • The basic guarantee
      • The strong guarantee

     
    FURTHER READING

     
    To get an impression of some topics covered in this course check out the sample reading: 
     
     
    New Features in ANSI C++
    White Paper
    EFFECTIVE STANDARD C++ LIBRARY
    Column in C++ Report

     
     
    TRAINING LOCATIONS

    Open Enrollment
    Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
    On-Site Training
    Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
    For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
    Schedule
    To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
      © Copyright 1995-2004 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/EffectiveSTL.htm  last update: 6 Jul 2004