Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Achim Ritter Geändert vor über 8 Jahren
1
Die STL
2
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
3
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
4
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);
5
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()
6
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
7
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
8
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
9
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...)
10
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;
11
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
12
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
13
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,...
14
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
15
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
16
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
17
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
18
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
19
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
20
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
21
STL: Multimaps Schlüssel kann mehrmals in der Liste vorkommen count(Schlüssel) ermittelt Anzahl der Elemente mit dem Schlüssel
22
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.