An Effective Introduction to the STL Training
(FW125)
4 Day Course
The Standard Template Library (the STL) is the most exciting C++ innovation in a decade, one that promises to revolutionize C++ software development.
The STL impressed me the first time I saw it, but the more I use it, the more impressed I become. I'm convinced it can improve a C++ programmer's productivity more than anything else in the language. -- Scott Meyers
This seminar is a hard-core, hands-on, in-the-trenches indoctrination in the ways of the STL. In a combination of lectures and labs, this course brings out the underlying design of the STL, demonstrates how to take advantage of the library's strengths, and shows how to avoid its weaknesses.
The purpose of this seminar is to master effective use of the STL, not to cover every aspect of the library. The companion reference book, Nicolai M. Josuttis' The C++ Standard Library, provides a comprehensive summary of the contents of the STL.
Participants will gain:
- An understanding of the architecture behind the STL, including its core components and concepts.
- Mastery of the subtle differences in semantics of member and non-member functions with the same name, e.g., find, remove, etc.
- Knowledge of how to integrate STL containers with code expecting arrays and other C-like data structures.
- The ability to cope with the complex STL-related error messages compilers often generate.
Format: Lectures and programming labs.
- Concepts and Architecture of the STL:
- Arrays and pointers, half-open ranges
- Generalizing pointers to iterators
- Generalizing arrays to sequences
- Algorithms
- Conventions and extensibility
- Function objects
- STL headers
- iterators vs. const_iterators
- Thread safety and the STL
- Exercises
- Containers I: Introduction and Sequence Containers:
- Overview of containers and container adapters
- Containers and iterator invalidation
- Universal container functionality
- vector and string
- size, capacity, "the swap trick," and "shrink to fit"
- vector operations
- Using vector with C APIs
- vector
- string functionality
- deque functionality
- list functionality
- Exercises
- Containers II: Associative Containers:
- Comparison functions
- Equality vs. equivalence
- std::pair
- Search functionality: find, count, lower_bound, upper_bound, equal_range
- Insertion and erasure
- In-place element modification
- Sorted vectors as an alternative to associative containers
- Exercises
- Iterators
- reverse_iterators and const_reverse_iterators
- Stream iterators
- C++'s most vexing parse
- Insert iterators
- Iterator categories
- Iterators vs. pointers
- Exercises
- Function Objects and Adapters:
- bind1st, bind2nd, not1, not2
- The unary_function and binary_function base classes
- ptr_fun, mem_fun, mem_fun_ref
- Overview of standard function objects (e.g., less)
- Exercises
- Algorithms:
- Overview of types of algorithms
- Algorithms vs. same-named member functions
- Detailed looks at for_each, transform, remove
- Overview of searching algorithms
- Overview of reordering algorithms
- Overview of modifying algorithms
- Overview of removing algorithms
- Overview of copying algorithms
- Overview of creation algorithms
- Overview of summarizing algorithms
- Exercises
- Common STL Extensions:
- Hashed associative containers
- slist
- rope
- SGI adapters: compose1, compose2, select1st, select2nd, etc.
- Exercises
- Further Reading
|
|
Pre-Class
- Verify your learning Objectives
During-Class
- Capture Tools, Q&A, demos and white boards
- Screen Sharing
|
- Feedback on Lab work
- On-the-fly Adjustments to meet your needs
After-Class
|
| Onsite Setup Instructions
| |
Course Set-up Requirements
FW125 An Effective Introduction to the STL | The hardware and software needed to successfully deliver this
course is listed below. PC configurations, including processor, RAM, and hard
drive, are recommended minimums. Courses can be run on lower performing
machine, but with slower performance. Please call for confirmation if your PC
configuration is significantly less than what is recommended.
In addition to PC equipment, each instructor will require projection equipment
that is capable of projecting the instructor's monitor onto a screen clearly
visible by all students participating.
| | Student Machines |
Instructor Machines |
| Hardware Requirements |
Hardware Requirements | Pentium Processor (>= 500 MHz recommended) At least 128 MB RAM (256MB recommended) Network connectivity (required) Internet connection (optional) 17" color monitor (required)
| Pentium Processor (>= 500 MHz recommended) At least 128 MB RAM (256MB recommended) Network connectivity (required) Internet connection (optional) 17" color monitor (required) LCD projector (resolution 1024 x 768 (XGA) or better preferred) and screen, plus whiteboard space.
| | Software Requirements |
Software Requirements | Windows 2000 Professional or Windows XP Professional Access to a C++ compiler. This could be Visual C++ 7.0 installed on each student machine, access through telnet to a UNIX machine with a C++ compiler, or whatever. If Visual C++ is installed, help files should be installed locally on every machine, or install VC from the network (and leave the CD on the network).
| Windows 2000 Professional or Windows XP Professional Adobe Acrobat Reader 6.0 or greater Access to a C++ compiler. This could be Visual C++ 7.0 installed on the instructor machine, access through telnet to a UNIX machine with a C++ compiler, or whatever
|
|
|
|
|
| Remote Access Available
| |
An Effective Introduction to the STL Training is now available as a remote access course.
You can now take open enrollment courses in our Los Angeles and Boston facilities without traveling. Remote Access to our ongoing schedule of instructor-led courses will allow you to fully participate real-time in expert-level lectures, demos and labs that have made DevelopMentor a leader in software development training. We've added new collaboration tools and prepared our instructors for remote students in class so you will be fully engaged in the learning process.
|
|
|
| Mentoring
| |
Quickly assimilate what you learn in An Effective Introduction to the STL Training and apply it to your project by taking advantage of our Mentoring services.
Our dedicated mentors facilitate your team's development. We add value to your business by enhancing the talent of your employees and maximizing their productivity. Mentors integrate the methodologies, technologies and practical experiences of the classroom through an on-the-job and on-the-project experience that produces real-world results.
|
|
|
| Onsite
| |
An Effective Introduction to the STL Training is also available as an onsite course.
If you have a group of people to train, an on-site course, delivered at your facility may be the most cost-effective solution for you. Our staff will work with your team to plan and produce the best possible result based on your team's size, experience levels, project needs and longer-term goals. We can structure a training course, or broader program, tailored to meet the specific needs of your organization. We'll make sure that any lab exercises run on the platform you use and we can tailor the lab exercises to be appropriate to your business. If you prefer to focus on just the pure technological principles, we can also deliver courses at your facility following the same format as our public curriculum.
|
|
|
| About the Author
| |
|
|
Course price includes course materials provided on an eco friendly USB memory stick. Use of a PC for lab exercises.
Onsite Setup
|
|