Die STL. Schreiben und Lesen von Dateien  Einbinden von  Lesen und Schreiben über stream-Objekte Streams führen Transformationen zwischen Programmobjekten.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

der Universität Oldenburg
Strukturen in C Spelz, Sievers, Bethke.
Eine dynamische Menge, die diese Operationen unterstützt,
Ein- und Ausgabe von Dateien
der Universität Oldenburg
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Sortierverfahren Richard Göbel.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Motivation Richard Göbel.
Java: Referenzen und Zeichenketten
Dateien. Eine Datei wird in C++ als ein Stream, also als ein Objekt einer bestimmten Klasse dargestellt.
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Externe Datenstruktur lineare Liste
C++ Standardbibliothek
Heaps und Priority Queues
1 C++ Standardbibliothek Breymann_Folien Die C++ Standardbibliothek (standard library) stellt ein erweiterbares Rahmenwerk mit folgenden Komponenten zur.
Arrays,Strings&Pointer in C/C++
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einführung in die Programmierung Datensammlung
Kollektionstypen (1) Es sind polymorphe Typkonstruktoren, jeweils als Sorten- und als Klassenkonstruktor (t,v beliebige Typen): –set, Set :Ungeordnete.
Kapitel 2: Datenstrukturen
Einführung in die Programmierung
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Informatik 1 Letzte Übung.
Dynamische Datentypen
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Algorithmen und Datenstrukturen Übungsmodul 11
EPROG Tutorium #3 Philipp Effenberger
Repetitorium PG : Standard Template Library FH-Darmstadt, FB Informatik.
Blockseminar Allgemeine Technologien II Dozent: P. Sahle März 2009 PHP in HTML Referentin: Angela Brinck.
(Syntax, Strings/Zahlen, Variablen, Arrays)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
Namensräume (namespaces). verwendet man umfangreiche eigene und fremde Bibliotheken (Sammlungen von Funktionen) so ist die Wahrscheinlichkeit groß, daß.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
THOMAS HANNEFORTH C++ IN DER CL II. GRUNDLEGENDE THEMEN Objektkonstruktion/ Objektdestruktion/ Zuweisung Objekte, Zeiger und Referenzen Wert und Referenzaufruf.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Singletons, Exceptions und (s)printf. Template Klassen  äquivalent zu Template-Funktionen  beim Erzeugen von Instanzen muss der Typ angegeben werden.
Import java.util.*; Hilfsklassen, die man eigentlich immer braucht.
Felder in der Informatik
 Präsentation transkript:

Die STL

Schreiben und Lesen von Dateien  Einbinden von  Lesen und Schreiben über stream-Objekte Streams führen Transformationen zwischen Programmobjekten und Datenquellen oder - senken durch  Output Stream wandelt Objekte in Sequenz von Low-Level Zeichen  Input Stream wandelt Sequenz von Low- Level Zeichen in Objekte  Beispiel: cout und cin

Schreiben und Lesen von Dateien  Allgemeine Verwendung von Stream- Objekten Öffnen der Ressource bei Definition der Variablen, inkl. Parameter (Flags) Lesen / Schreiben von der / auf die Ressource, inkl. Statusabfragen Schließen der Ressource

Schreiben in eine Datei  Klasse ofstream  Öffnen der Datei bei Definition der Variablen mit Parametern Dateiname Flags (Binär / Text / Anhängen / Ersetzen...) ofstream myOStream("myFile.xyz", ios::binary + ios::app);

Schreiben in eine Datei  Schreiben von Werten mittels der Methode write(...) oder mit Umleitungsoperator << write() erwartet Zeiger auf char und Größe der Ressource write((char *)myObject, sizeof(myObject));  Nach Beendigung des Schreibens stream mit close() schließen myOStream << "Some text" << endl; myOStream.close()

Lesen aus einer Datei  Klasse ifstream  Öffnen analog zu ofstream (andere Flags) ifstream myIStream("myFile.xyz", ios::binary);  vor Verwendung Test auf Erfolg Variable ist NULL bei Misserfolg

Aufgabe 22 – Schreib und lies  Gib über die Konsole einen Text ein  Speichere diesen Text in eine Datei. Verwende dabei den Append-Modus  Lies über einen anderen Stream die Datei wieder ein  Gib den Inhalt der Datei auf der Konsole aus

Die STL  Standard Template Library  vorgefertigte Lösungen für immer wieder benötigte Programmiertechniken  im C++-Standard festgeschrieben  Funktionalitäten allgemein und konfigurierbar gehalten  man nutzt Wissen und Erfahrung versierter Entwickler

Inhalt der STL  Container (Vektoren, Listen, Mengen, Queues und Stacks)  Iteratoren (durchgehen von Container- elementen in wohldefinierter Ordnung)  Strings (char[])  Streams (Datei, Keyboard, Bildschirm...)  Numerik (Strukturen, Logarithmen, Zufallszahlen...)  Algorithmen und Funktionsobjekte (Transformationen, Vertauschung...)

STL: Vektoren  Arrays mit zusätzlichen Eigenschaften  Einbinden der Datei  Inhaltstyp beliebig angebbar (Template!) vector myVec(10); Angabe der Größe optional  Iterator zum durchlaufen des Vectors vector ::iterator iter;  Funktionen zur Ermittlung von Anfang und Ende des Vektors for(iter = myVec.begin(); iter < myVec.end(); iter++) cout << *iter << endl;

STL: Vektoren  size() – Ermittlung der Größe des Vektors  push_back(elem) – hängt Element elem an den Vektor an  pop_back() – löscht letztes Element des Vektors  at(i) – (überprüfter) Zugriff auf Element an der Stelle i wirft std::out_of_range von exception und logic_error abgeleitet genauere Informationen über member what()  resize(i) – Änderung der Größe

Aufgabe 23 - Vektoren  Erstelle einen Vektor vom Typ int32 ohne die Größe anzugeben  schiebe 3 beliebige Zahlen in den Vektor  gib den Inhalt des gesamten Vektors aus  entferne das letzte Element  greife auf das 4. Element zu  fange den resultierenden Fehler ab und gib eine entsprechende Meldung aus

STL: Listen  doppelt verkettete Listen kein indizierter Zugriff einfaches Einfügen und Entfernen  Einbinden der Datei  Analogien zu Vektor Inhalt beliebig angebbar (Template) Iterator (list ::iterator iter;) begin(), end(), push_back(..), size,...

STL: Listen  insert(iterator, elem) – fügt an der Stelle iterator das Element elem ein  push_front(..)/pop_front() – Element am Anfang einfügen / löschen  erase(iterator) – Element an der Stelle iterator löschen  remove(wert) – alle Elemente mit dem Inhalt wert löschen  Teilen, Sortieren und Zusammenfügen durch splice, sort und merge

Aufgabe 24 - Listen  Erstelle eine Liste für int32 Werte und fülle diese mit 10 Werten zwischen 1 und 5  Entferne alle Elemente mit dem Wert 4  Ordne die Liste  Gib die Liste auf der Konsole aus

STL: Strings  Grundgedanke: Kapselung von (char *) zur einfachen Verwendung von Zeichenketten  basic_string Template zur Bestimmung des Typs der Zeichen Typ darf keinen benutzerdefinierten Kopier- Konstruktor besitzen  Spezielle Ausprägungen string – char als Zeichendatentyp wstring – wchar_t als Zeichendatentyp  Einbinden der Datei

STL: Strings  Vergleich über Operator '==' oder Methode compare(..)  Verknüpfen über Operator '+' oder Methode append(..)  Zugriff auf einzelne Zeichen über Index [] (Vorsicht, Länge!)  length() liefert die Länge des Strings  capacity() liefert den reservierten Speicher

STL: Strings  find(..) – ermittelt die Position eines Teilstrings  replace(..) – ersetzt einen Teilstring durch einen anderen  insert(..) – fügt einen String an beliebiger Stelle in den bereits existierenden ein  substr(..) – gibt einen Teilstring zurück

STL: Maps und Multimaps  Speichern eine Liste von Key-Value-Pairs map mapVarName;  Map-Element pair pairVarName;  Maps verlangen eindeutigen Schlüssel, Multimaps nicht  Einbinden der Datei  Zugriff über mapVarName[Schlüssel]  Iterator analog zu Vektoren  insert(pair) zum Einfügen eines Paares

STL: Maps und Multimaps  Zuweisen von Werten über pairVarName = make_pair(Schlüssel, Wert);  Zugriff auf Schlüssel über first  Zugriff auf Wert über second  find(Schlüssel) zum Suchen nach einem Schlüssel Achtung: Beim Zugriff auf einen nichtexistenten Schlüssel wird dieser angelegt  begin() und end() analog zu Vektor

STL: Multimaps  Schlüssel kann mehrmals in der Liste vorkommen  count(Schlüssel) ermittelt Anzahl der Elemente mit dem Schlüssel

Aufgabe 25 – Strings und Maps  Erstelle eine Map zur Speicherung von String (Key) – Integer (Value) – Paaren  Füge 3 Paare in die Liste ein  Greife auf ein Element zu, dessen Schlüssel nicht in der Liste vorhanden ist  Gib die komplette Map auf der Konsole aus