next up previous
Nächste Seite: Über dieses Dokument ...


STL


Standard Template Library



Mathias Linke, IN00, HTWK-Leipzig, 6. April 2004


Gliederung






Einführung in die Standardbibliothek


Einführung -- Motivation






Einführung -- Infos






Einführung -- Compileranforderungen (1)






Einführung -- Compileranforderungen (2)






Einführung -- Compileranforderungen (3)






Einführung -- Erste Schritte






Grundkurs zu Templates


Grundkurs zu Templates -- Motivation




Die Funktion °swap° soll zwei per Referenz übergebene Werte vertauschen. Für den Datentyp °int° sieht die Funktion so aus. 1.00

1.20 Für alle anderen Daten-Typen ist der Algorithmus gleich. Trotzdem ist °swap° für jeden einzelnen neu zu überladen! Bei Listen würde es reichen, statt mit echten Element-Typen zu arbeiten, °void°-pointer zu nutzen. Dadurch geht jedoch die Typsicherheit verloren.


Grundkurs zu Templates -- Deklaration




Die Deklaration beginnt mit dem Schlüsselwort °template°. In den spitzen Klammern dahinter, werden die Parameter angegeben. Sie lassen sich in der Funktion an der Stelle von Typen oder Konstanten verwenden. 1.00

1.20 Dieses Template funktioniert nur mit Typen, für die ein Zuweisungsoperator existiert!
Notfalls ist er für eigene Klassen selbst zu schreiben.


Grundkurs zu Templates -- Instanzenbildung




Die genaue Typisierung der °swap°-Funktion erfolgt bei ihrer Verwendung weitestgehend automatisch. Der Compiler überprüft bei der Übersetzung, ob es schon eine entsprechende Instanz gibt. Falls nicht, wird der komplette Programmteil für den entsprechenden Typ erneut eingefügt. Es ist jedoch zu beachten, dass bei der automatischen Instanzenbildung keine implizite Typumwandlung stattfindet. 1.00

1.20


Grundkurs zu Templates -- Templateklassen (1)




Templates lassen sich auch mit Klassen nutzen. Die Definition ähnelt der von Funktionen. 1.00
\begin{lstlisting}
template< typename T, int SIZE = 10 > // 10 ist Default
cla...
...st Werte
void Set( int index, T value ); // setzt Werte
};
\end{lstlisting}
1.20 Es lassen sich auch einzelne Methoden und innere Klassen als Template definieren. ( Iteratoren bei Listen )


Grundkurs zu Templates -- Templateklassen (2)




Die Deklaration ist etwas kompliziert und zeigt, dass die Typinformation untrennbar mit der Klasse verbunden ist. 1.00

1.20


Grundkurs zu Templates -- Templateklassen (3)




Bei der Verwendung der Klasse sind in spitzen Klammern die gewünschten Ersetzungen für Typen und Konstanten anzugeben. 1.00
\begin{lstlisting}
MyArray<int> a1( 0 ); // Platz fuer 10 int
MyArray<double> ...
...k, 2.5 ist double
a2.Set( 1, 6 ) // ok, int 6 wird zu double
\end{lstlisting}
1.20 Bemerkung: Obwohl bei der Verwendung der Set-Methode für die Werte eine automatische Typumwandlung stattfindet, lassen sich die Arrays nicht untereinander zuweisen.
Jede dieser MyArray-Instanzen hat einen anderen Typ!


Grundkurs zu Templates -- Zusammenfassung




Templates sind ein mächtiges und vielseitiges Sprachmittel. Problem der Programmaufblähung:


STL Überblick


STL Überblick -- Das Konzept (1)






STL Überblick -- Das Konzept (2)






STL Überblick -- Das Konzept (3)






STL Überblick -- Container (1)






STL Überblick -- Container (2)






STL Überblick -- Container (3)






STL Überblick -- Container (4)






STL Überblick -- Container (5)






STL Überblick -- Container (6)






STL Überblick -- Iteratoren (1)






STL Überblick -- Iteratoren (2)






STL Überblick -- Container/Iterator Beispiel (1)






STL Überblick -- Container/Iterator Beispiel (2)




Die Elemente einer °map< T1, T2 >° sind vom Typ °pair< T1, T2 >°! 1.00

1.20


STL Überblick -- Algorithmen (1)






STL Überblick -- Algorithmen (2)






STL Überblick -- Algorithmen (3)






STL Überblick -- Algorithmen (4)






STL Überblick -- Algorithmen (5)






STL Überblick -- Algorithmen (6)






STL Überblick -- Algorithmen (7)






STL Überblick -- Zusammenfassung








next up previous
Nächste Seite: Über dieses Dokument ...
Johannes Waldmann 2004-04-06