BD Software delivers on-site training seminars for programmers in C, C++, Java, Perl and Unix     BDSoft for on-site training seminars for programmers in C, C++, Java, Perl and Unix
















































































BD Software delivers on-site training seminars for programmers in C, C++, Java, Perl and Unix

Effective STL
Example Source Code


Scott Meyers entrusted me with the task of validating the source code examples in his new book, Effective STL. Since most of the examples were fragments, I wrote the smallest test harness I could come up with for each example and compiled them all under several popular STL platforms. Download the ZIP archive or the .tar archive (updated January 1, 2002 to track the Effective STL Errata page).

Here is the README.txt file directly out of the archive:

==================================
Effective STL Source Code Examples
==================================

Leor Zolman 6/22/2001
leor@bdsoft.com
www.bdsoft.com


This code is being maintained by me, Leor Zolman, and NOT by Scott Meyers. Please send all bug reports / comments / suggestions, etc., to ME.

----Thanks!



When Scott Meyers asked if I'd be interested in testing out the source code for Effective STL, I jumped at the opportunity for several reasons:

  1. I'm relatively new to STL myself, and this was a great way to get more experience working with the library;

  2. I needed test cases for my Freeware STL Error Decryptor utility, and the error messages resulting from typos in Scott's original code made for excellent filter fodder ;-)

This archive is the result of that testing. For each item, I began with a single test harness program, then added additional programs as necessary. To make sure I was testing the exact code from the book, I cut and pasted the actual code from an ASCII version of the manuscript directly into the test harnesses (whitespace and comments were reformatted to fit their new context, but that's about it).

The initial pass was performed under just one platform, MSVC 6 with the Dinkumware 3.08 drop-in library. After completing the test programs and ferreting out syntax and (the rare) flagrant coding errors, I batch-compiled all the test programs using several platforms. The results were logged, and I annotated the logs to indicate "on purpose" errors (intentional examples of incorrect code) as well as errors due to the various compiler and library bugs in each platform. The platforms and their corresponding log files are:

Microsoft VC6/Native Library

vc6Native.log

Microsoft VC6/Dinkum 3.08 Library

dinkum.log

Borland C++ 5.5 (free cmd line)

borland.log

DJGPP v2.03

gpp.log

Visual C++.NET Beta/Native Library

vcnet.log

STLPort 4.0 Library (w/ MSVC 6)

stlport.log

STLPort 4.1b6 Library (w/ MSVC 6)

stlport41b6.log



Main Example source files are numbered as follows:


Introduction:

0.cpp

Item n:

n-1.cpp, n-2.cpp, etc.

Appendices:

a-1.cpp, b-1.cpp, b-2.cpp


Scott's general-purpose Container Utilities header file, ESTLUtil.h, is included in most examples. Its "using ESTLUtils" directive typically appears within the main() function. The std namespace is usually pulled in within main(), but occasionally I've put it at file scope to avoid having to splice many std:: qualifiers into file-scope definitions.

DISCLAIMER / INVITATION FOR FEEDBACK: I completed this testing in early April 2001, but Scott continued to tweak the book for some time thereafter and some of the printed code examples may no longer correspond to the test code. As discrepancies are brought to my attention, I'll strive to bring the examples into sync with the book. Please let me know if you find any such discrepancies.



Bring a live, instructor-led STL on-site training to your company! BD Software offers Advanced C++ led by Leor Zolman, with courseware from Stephen C. Dewhurst! Think this cannot possibly be affordable? Think again...


 

Check out BD Software's STL Error Decryptor, a free tool to simplify STL-related error messages under Comeau C++, Metrowerks CodeWarrior, gcc, Microsoft Visual C++, Borland C++, Intel C++ and the EDG front end.

Need a simple, handy way to stuff arbitrary values into a new STL container in a single statement? Check out BD Software's new, free, STL Container Initialization Library!

Feedback (suggestions/requests, bugs, whatever) is always appreciated -- contact leor@bdsoft.com.



Home | Courses | Tools | Resources
Clients | Successes | Contact | Site Map | Links | About Us

All text and images on this website are Copyright 2001-2003 BD Software.
All rights reserved.


Courses:

C and C++ Seminars

Java Seminars

Unix-Related Seminars


Clients:

Qualcomm

Sapient, Inc.

Boston Technology

(See full
client list)


BD Software delivers on-site training seminars for programmers in C, C++, Java, Perl and Unix