Einige Hinweise zur Verwendung der CD-Software
==============================================

 - Ganz kurz:
   ==========

   Auf UNIX-Systemen lassen sich die meisten Beispiele mit dem
   GNU-Compiler g++ und dem Directory /buchlib als Suchpfad:
	g++ -I/CD/buchlib ...
   uebersetzen

 - Funktionsobjekt times/multiplies
   ================================

   Als eine der letzten Aenderungen wurde der Name des
   STL-Funktionsobjekts "times" in "multiplies"
   abgeaendert. Dies geschah aufgrund eines Nameskonflikts
   mit einer standardisierten C--Funktion.
   Solange diese Entscheidung noch nicht umgesetzt ist,
   muss entweder times verwendet oder multiplies
   umgesetzt werden:
    - entweder als Konstante entsprechend definieren:

	#define multiplies times

    - oder als vollstaendiges Funktionsobjekt implementieren:

	template <class T>         
	struct multiplies : public binary_function<T,T,T>
	{
	    T operator() (const T& x, const T& y) const {
		return x * y;
	    }
	};


 - Bezeichnung der Header-Dateien
   ==============================

   Es gibt ein Durcheinander zwischen den alten und neuen
   Bezeichnungen der Header-Dateien:

        frueher:        <datei.h>
                        alle Identifier global

        neu:            <datei>
                        alle Identifier im Namespace std

   Die Beispiele im Buch verwenden die neue Notation.
   Die beiliegenden Bibliotheken aber zum Teil noch die
   alte Notation.
   Deshalb muessen die Beispiele ggf. noch angepasst
   werden:
        - "using namespace std" auskommentieren
        - Header-Dateien umbenennen:
                <iostream.h> statt <iostream>
                <vector.h>   statt <vector>
                <list.h>     statt <list>
                <algo.h>     statt <algorithm>
                ...

   Alternativ koennen die neuen Datei-Namen umgesetzt und
   die "using namespace std"-Anweisungen ignoriert werden:
	- Header-Datei "namespace" anlegen:
		#ifndef __NAMESPACE__
		#define __NAMESPACE__
		extern "C" unsigned int write (int, const char*, unsigned int);
		class NAMESPACE {
		  public:
		      NAMESPACE () {
			    const char* s = "ignore namespace\n";
			    (void)write (2, s, 17);
		      }
		};
		#define using
		#define namespace NAMESPACE
		#endif
	- Header wie "iostream" wie folgt anlegen:
		#ifndef __IOSTREAM__
		#define __IOSTREAM__
		#include <iostream.h>
		#include "namespace"
		#endif


 - Assoziative Container
   =====================

   Die meisten Compiler beherrschen noch keine
   Default--Template--Parameter.
   In dem Fall muss vor allen bei allen
   Deklarationen von assoziativen Containern
   das Default--Sortierkriterium less<T>()
   als zweiter Parameter uebergeben werden.

   
 - Iterator-Funktion distance()
   ============================

   Bei alten STL--Versionen besass die Funktion distance()
   eine andere Schnittstelle.
   In dem Fall sollte die Header-Datei "distance.h"
   eingebunden werden. Dies geschieht in den betroffenen
   Beispielen durch Definition der Praeprozessor-Konstante
   ALTES_DISTANCE (z.B. durch -DALTES_DISTANCE) automatisch.


 - Valarray: length()/size()
   =========================

   Bei den Beispielen zu valarrays muss statt der Elementfunktion
   size() meistens noch die fruehere Bezeichnung length() verwendet
   werden.


 - GNU-Compiler
   ============
 
   Zur Verwendung des GNU-Compilers sollte dieser
   unter dem Namen
        gcc
   und NICHT "g++" mit den Link-Optionen
        -liostream -lstdc++
   aufgerufen werden.
   Ansonsten werden alte Standard-Bibliotheken verwendet.


 - Borland-Compiler
   ================

   Falls bei der Uebersetzung des STL von HP der
   Borland-Compiler eine Fehlermeldung ausgibt,
   zu MAX und MIN ausgibt, sollte vor Einbindung
   der Header-Dateien die Konstante __MINMAX_DEFINED
   definiert werden:

        #define __MINMAX_DEFINED
        #include <set.h>
        #include <vector.h>
        #include <stdio.h>
        #include <ctype.h>
        #include <string.h>
        ...

   Siehe dazu auch auf dem Internet:
        http://www.cs.rpi.edu/~wiseb/stl-borland.html

