Topic: Complete FAQ on STL as of 4/14/95


Author: mcorcora@ix.netcom.com (Marian Corcoran)
Date: 1995/04/14
Raw View
I have put together three articles for the STL FAQ.  The first is some
material on using MODENA by Edgar Crisostomo, along with some needs in
education that he sees for STL.  The second is a comparison of Modena
and ObjectSpace by Mike Lindner.  The third is an article I posted about
Sources and References of STL.  I have received permission of both other
authors to include their work in this posting.  If someone has other
material or experiences to include you may e-mail them to me and I will
add them.  Especially of interest would be examples of STL that you may
have developed as you learn STL or industrial applications.  Please
state whether I may use your article in the FAQ and whether I may use
your name.  I will not include e-mail sent to me unless it is stated
explicitely that I may do so.

Marian

ON USING MODENA
 >   We use Modena
> >STL++ v2.0 - they respond fairly quickly to our needs, they add bug
> >fixes or compiler support for our Unixware 2.0 SDK C++ compiler, and
> >they answer our many technical questions.
> >--
The STL++ Manual has a "Files" Heading at
the top of each component description, and that is all that should be
explicitly #included to use that component (mutual independence).

When I #include <vector.h>, it pulls in all the other dependent
includes.  It is not explicitly stated, but for C-like arrays, you
#include <algobase.h>.

There are minor problems, I will report to Modena (example: hashfun.h
has non-template function _definitions_, so you get multiply defined,
when used over several translation units.   To improve the ability (for
us) to specify manual template instantiation, it would be nice if they
factor out the non-inline template definitions into another file.

EDUCATIONAL HINTS
A discussion of build issues would be useful.  Especially since STL
template code can have really obscure compiler messages with todays
compiler technology.  There are also issues with debugging template
code.

A discussion of when to pass container by reference, versus passing
iterators would be useful.

> >Edgar Crisostomo    408-492-6528, edgar@clipper.robadome.com
> >Systems Software, Siemens Rolm Communications, Inc. FAX 408-492-3305

> >              ====  "Darmok and Jhilad at Tanagra,  ====
> >              ====   Shaka when the walls fell. "   ====


**********************************************************************
Comparison of Modena And ObjectSpace by Mike Lindner

I just bought STL++ from Modena and STL<toolkit> from ObjectSpace, for
purposes of comparison.  So far I have not had a chance to use either
extensively, but I have the following observations:

- Modena was very helpful on the phone, and responded quickly to
whatever
  I called about.  The initial floppy they sent me was bad, and they
  replaced it overnight.  In every case but one technical question, the
  person who answered the phone was able to do everything I needed.  In
  the remaining case, I received a call back within hours of my
  question.  I like their service.

  ObjectSpace had an operator, who directed me to the one salesperson,
who
  was always "out of the office" when I called, and who was the only one
  whoc could sell me the product (it took 5 days just to order the
  product, because I couldn't get in touch with her).

- Both products come as source, and you must build the libraries
  yourself.  The documentation for doing this from Modena was
  sketchy, and it wasn't until I called tech support that I discovered I
  had to change some files by hand to make them compile with my compiler
  (which is one of the one's they advertise as working with).

  ObjectSpace, on the other hand, has a neat little config package that
  tests what your compiler can do, and writes a header file which
  configures the code to be correct for your compiler (lots of
  preprocessor magic in them there header files).  It was a joy to use.

- So far, the test programs I have compiled are much smaller when I use
  the ObjectSpace libraries than with the Modena libraries.  As I said,
  I have not stressed either product, so these numbers may not reflect
  use in an actual application.

- As for conformance, ObjecSpace doesn't necessarily support everything
  in STL, but only as much as they can squeeze out of the compiler you
  give them to work with.  Is that good or bad?

- The ObjectSpace library claims to be "thread safe", although I haven't
  tried that our yet.  Apparently they have a wrapper class that behaves
  like a smart pointer, but can be locked for reading or writing.  They
  also have some other platform independent thread and mutex code.

  The Modena folks said their library is not "thread safe", but only in
  one place, and they would gladly show me how to modify the source to
  add that feature.  One of my compiler vendors says they'll be shipping
  Modena with their compiler soon, and their version will be thread
  safe.

- Modena includes some extra goodies, like hash tables and an ANSI
  string class.

- Oh, and it looks like ObjectSpace requires perl to run the config
  program.
--
Mike Lindner
mikel@attmail.com
mpl@cmprime.attpls.com
mpl@pegasus.att.com

**********************************************************************
Annotated Sources and References of STL by Marian Corcoran
1.  Where does one get the STL?

     anonymous ftp via butler.hpl.hp.com
  works with Borland 4.5 and IBM
  also includes something on hash tables not in STL by Bob
    Fraley
     no support included

      STL++: Modena Software at 1-800-MODENA-1
  works with Borland, IBM C Set++, Apogee, Visual C++ 2.0
   (this last has some limitations.)
  comes with tutorial, you can get the tutorial separately
  (read this tutorial after A. Stevens and after playing
  with ObjectSpace examples.)

  STL<ToolKit>:ObjectSpace at 1-800-OBJECT-1
  most C++ compilers
  code is well documented
      *comes with tutorial with over 200 elementary examples that
   have just been placed in the public domain
    available
***addition******      via anonymous ftp via butler.hpl.hp.com at
     /stl/examples.Z or .zip for PC
  These examples are a good place to start.

2.  References (these are the ones I know about):

    A. Koenig. File iterators. Journal of Object-oriented Programming
(JOOPS), Nov/Dec 1994
    A. Koenig. Generic iterators. JOOPS, Sept. 1994
    A. Koenig. Templates and generic iterators.  JOOPS, June 1994
    A. Koenig. ? . January , 1995
--intermediate level material
    D.R. Musser and A.A. Stepanov. Algorithm-oriented generic libraries.
Software-Practice and Experience, July 1994
    A.A. Stepanov and M.Lee.  The Standard Template Library. ISO
Programming Language C++ Project. Doc. No. X3J16/94-0095, WG21/N0482,
May 1994.  (Look in HP's ftp for stl.doc, I believe). Although it is the
"definitive" STL, it is not intro material.
*    A. Stevens. He has an interview with Stepanov in Dr. Dobb's
Journal, March 1995.  This is an excellent conceptual introduction to
the STL, also a good place to start.
*    A. Stevens.  The Standard Template Library (with some code) ,... in
his column, Dr. Dobb's Journal, April 1995.  Also good intro material.
    B. Stroustrup. Making a vector fit for a standard. C++ Report, Oct.
1994.
--intermediate level material.  Stroustrup made some important
contributions to the design of STL, discussed here.
*    M.J. Vilot. An introduction to the standard template library.
C++ Report, Oct 1994.
-- You might want to read Stevens first.
    Also see
 http://www.cs.rpi.edu/~musser/stl.html
 This material is also available via anonymous ftp
       ftp.cs.rpi.edu in directory pub/stl the file stl-info.ps.Z
   includes STL Online Algorithm Reference by R. Cook,
   D. Musser, and K Zalewski with examples.
   See ObjectSpace examples first.