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.